backbone.js视图的生命周期,几个初学者问题
有人能解释一下,视图(控制器)的生命周期是什么,比如说,TODO列表应用程序中的一行backbone.js视图的生命周期,几个初学者问题,backbone.js,Backbone.js,有人能解释一下,视图(控制器)的生命周期是什么,比如说,TODO列表应用程序中的一行 App.RowView = Backbone.View.extend({ events:{ "click #del" : "delRow" } }); 在大多数教程中,AppView都会这样做: render: function() { this.collection.each(this.renderRow, this); ret
App.RowView = Backbone.View.extend({
events:{
"click #del" : "delRow"
}
});
在大多数教程中,AppView都会这样做:
render: function()
{
this.collection.each(this.renderRow, this);
return this;
},
renderRow: function(row)
{
var rowView = new App.RowView({model:element});
this.$('#rows').append(rowView.render().el);
}
问题:
rowView
只使用一次,并在renderRow()中处理?或者它是活的
model.destroy
并调用remove()
是否足够好click#del
事件是否仍会被捕获,并在不创建rowView
的情况下执行某些操作'click#del'
不应该更好地位于父视图中,以便jQuery可以在那里委托和附加行为吗李>
remove()
之前解除绑定:RowView
的实例才能捕获事件单击#del
事件,如果您在父视图中声明该事件,您如何知道要删除哪一行this.template
,如下所示:template:uu.template(“hello:”)代码>李>
Re(1):通过将事件处理绑定到el
@muistooshort的delegate
调用,将有对该视图实例的引用。非常有趣的一点,我在说“如果有其他引用”时,正在考虑显式绑定的事件但是我没有想到DOM绑定的事件。通过delegate
隐藏的引用会咬到每个人,当他们没有每个视图实例el
时会导致泄漏。我从经验中了解到这一点(当然),如果多个视图共享一个el
@muistooshort,那么您必须通过undelegateEvents
清理隐藏的引用。这是否意味着我们应该调用remove()
和undelegateEvents()
?甚至没有提到undelegateEvents()
我认为@muistooshort所说的情况是当您的视图使用共享的el
时,您不能调用View.remove()
但是如果不是这样,请调用View.remove()
将删除所有绑定的DOM元素以及它们对视图的所有引用。