Я пытаюсь реплицировать TODO MVC в VueJs. (Пожалуйста, проверка этого codepen: http://codepen.io/sankalpsingha/pen/gwymJg) Я создал компонент под названием «TODO-лист» со следующим кодом:Отправка данных не-родительскому компоненту в VueJs
Vue.component('todo-list',{
template: '#todo-list',
props: ['todo'],
data: function(){
return {
// Let us set up a isEditing Boolean so that we can know if the user
// will edit something and we need to change the state to reflect it.
isEditing: false
}
},
methods: {
enableEditing: function(){
this.isEditing = true;
},
editTodo: function(todo){
// todo.todo = todo.todo.trim();
this.isEditing = false;
},
removeTodo: function(todo){
//this.todos.$remove(todo); // --> This part is not working?
}
}
});
Однако, у меня есть данные, определенные в экземпляре приложения:
var app = new Vue({
el: '#todo-section',
data: {
newTodo: '',
todos: [
{
id: 1,
todo: 'Go to the grocery',
completed: false
},
{
id: 2,
todo: 'See the movie',
completed: true
},
{
id: 3,
todo: 'Jack Reacher : Tom Cruise',
completed: false
}
]
},
methods: {
addTodo: function(){
// This will not allow any empty items to be added.
if(this.newTodo.trim() == ''){
return;
}
this.todos.push({
todo: this.newTodo.trim(),
completed: false
});
this.newTodo = ''
}
}
});
Я не могу удалить ни одного Todo из списка. Я предполагаю, что мне нужно отправить сообщение об ошибке в экземпляр приложения и разместить там слушателя, чтобы удалить данные из него? Как удалить данные?
Btw он использует 2,0 и $ удалить, который осуждается в Vue 2. –
@Belmin спасибо за указание на это! Я не знал, что это было от Vue 1.x, так как я начал изучать Vue только после выпуска 2.0. Итак, '$ remove' должен удалить элемент массива, так что нам не нужно использовать' splice'? – Mani
Да, в основном в Vue 1.0 $ remove был просто синтаксическим сахаром для array.splice - по входу Vue 2, он устарел, поэтому рекомендуется использовать array.splice для этого материала. –