<div id="app">
<todo-add
v-on:todo-new="addNewTodo"
:par_name="newTodoName"
></todo-add>
<p><pre>{{todosObj}}</pre></p>
</div>
<script>
Vue.component('todo-add', {
props: ['par_name'],
data: function() {
return {
pname: this.par_name
};
},
...
<div id="app">
<todo-add
v-on:todo-new="addNewTodo"
:par_name="newTodoName"
></todo-add>
<p><pre>{{todosObj}}</pre></p>
</div>
<script>
Vue.component('todo-add', {
props: ["par_name"],
data: function() {
return {
pname: this.par_name
};
},
...
<div id="app">
<todo-add
v-on:todo-new="addNewTodo"
></todo-add>
<p><pre>{{todosObj}}</pre></p>
</div>
<script>
Vue.component('todo-add', {
data: function() {
return {
pname: ''
};
},
template:
`<ul>
<input v-model="todoName" autofocus></input>
<button v-on:click="add">Add New Todo</button>
</ul>`,
computed: {
todoName: {
set: function(val) {
this.pname = val;
},
get: function() {
return this.pname.trim();
}
}
},
methods: {
add: function() {
console.log(`emit: this.name = ${this.pname}`);
this.$emit('todo-new', this.todoName);
}
}
});
...
</script>