我希望这段代码足以理解这个问题 问题如下,
1)我第一次加载myView,
2)如果我点击div#myId
,功能myAction
将按预期触发一次。
3)如果为remove
另一个视图调用方法rendering
,则会触发功能myAction
两次。
4)然后,如果我重复步骤3),则会触发功能myAction
三次,依此类推。
可能是什么问题?
var myView = Backbone.View.extend({
// The DOM events specific to an item.
events: {
"click #myId" : "myAction"
},
myAction: function () {
// some code
},
remove: function remove ()
{
$(this.el).html("");
}
});
P.S .:
为每个渲染调用创建的DOM都可以。
答案 0 :(得分:1)
这里的问题通常是你处于某种状态,你正在一次又一次地重新渲染预定义元素的视图,而没有正确地破坏视图,导致“僵尸”视图。如果您在视图中定义了el
,并继续在其上呈现所述视图,则最终会复制您的活动。
$(document).bind('click',function(){ console.log("document.click"); });
$(document).bind('click',function(){ console.log("document.click"); });
$(document).bind('click',function(){ console.log("document.click"); });
它将发射三次事件。
详细了解如何初始化视图,最重要的是如何渲染/重新渲染视图。
你需要在你的删除方法中做些什么呢?
remove: function remove ()
{
this.$el.remove();
this.$el.unbind();
}