Javascript 主干:绑定事件发生多次
我制作了一个简单的待办事项应用程序:Javascript 主干:绑定事件发生多次,javascript,backbone.js,javascript-events,Javascript,Backbone.js,Javascript Events,我制作了一个简单的待办事项应用程序: var Todo = Backbone.Model.extend({ }); var Todos = Backbone.Collection.extend({ model: Todo }); var todos = new Todos(); var ItemView = Backbone.View.extend({ tagName: "li", template: _.template($("#item-template").
var Todo = Backbone.Model.extend({
});
var Todos = Backbone.Collection.extend({
model: Todo
});
var todos = new Todos();
var ItemView = Backbone.View.extend({
tagName: "li",
template: _.template($("#item-template").html()),
render: function () {
this.$el.html(this.template(this.model.toJSON()));
return this;
},
initialize: function () {
this.listenTo(todos, 'remove', this.remove);
},
events: {
"click .delete": "clear"
},
clear: function () {
todos.remove(this.model);
}
});
var AppView = Backbone.View.extend({
el: $("body"),
initialize: function () {
this.listenTo(todos, 'add', this.addOne);
},
addOne: function(todo) {
var view = new ItemView({
model: todo
});
this.$("#list").append(view.render().el);
},
events: {
"click #create": "create"
},
create: function () {
var model = new Todo({
title: this.$("#input").val()
});
todos.add(model);
}
})
var app = new AppView();
在线演示在这里:
我可以正确添加项目,但当我想删除某些项目时,所有项目都已删除
我在ItemView
中发现它与绑定事件有关,当我单击一个delete
按钮时,所有这些都会被触发
但是如何解决这个问题呢?您正在收听的是从集合中删除事件,如果我的记忆正常,则每当删除模型时,集合都会发送一个删除事件,因此当您从集合中删除模型时,所有视图都会看到该事件 我将视图中的初始化更改为
initialize: function () {
this.listenTo(this.model, 'remove', this.remove);
},
这似乎奏效了