vor kurzem, ich versuche, eine To-do-Demo über vuejs zu schreiben, aber wenn ich den folgenden Code schreibenklicken und Mausereignis Konflikt in vuejs
<div id="item_lists">
<div class='user_choice_item' v-for="todo in todos" @mouseenter="showDeleteBtn($index,$event)" v-on:mouseleave.self="hideDeleteBtn($index,$event)">
<input type='checkbox' name='item_cbx' v-model="todo.checked" />
<label class='with_cbx_item'>{{todo.content}}</label>
<span class='delete_bt' v-on:click.stop="deleteTodo(todo)" v-show="todo.show"></span>
</div>
</div>
// js
var todoList = new Vue({
el:"#item_lists",
data:{
todos:[]
},
methods:{
showDeleteBtn:function(index,event){
event.stopPropagation();
if(event.currentTarget.className!=="user_choice_item")
return;
var newState = Object.assign({},this.todos[index],{show:true});
this.todos.$set(index,newState);
},
hideDeleteBtn:function(index,event){
var newState = Object.assign({},this.todos[index],{show:false});
this.todos.$set(index,newState);
},
deleteTodo:function(todo){
this.todos.$remove(todo);
return false;
},
}
});
es stellt sich heraus, dass nur das mouseenter-Ereignis korrekt ausgelöst werden kann, der Klick auf "delete_btn" und das Ändern des Ereignisses in der Checkbox, das mouseleave-Ereignis wird nicht ausgelöst. Wenn ich jedoch das Mouseenter-Ereignis des übergeordneten div entfernen. Die Kinderereignisse arbeiten. Ich will wissen, was das verursacht .. kann jemand mir helfen?
ja! Ich habe es gestern gemacht, und ich habe festgestellt, dass es immer noch funktioniert, indem ich nur den Attr-Wert und nicht den ganzen Obj festlege. Ich möchte jedoch wissen, gibt es eine Methode, die mir helfen kann, einige (mehr als eine) Attribute gleichzeitig zu ändern? – lizlalala
Sie können beliebig viele Attribute ändern. Sie müssen nur Teil Ihres Viewmodels sein. –