生命周期的骨干.js观点,几个初学者问题



有人可以解释一下,视图(控制器)的生命周期是什么,比如,对于 TODO 列表应用程序中的行?

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);
    }

问题:

  1. 这是否意味着rowView只使用一次并在renderRow()中处置? 还是它继续存在?
  2. 如果为真,何时杀死视图? 将侦听器添加到model.destroy并在视图中调用remove()是否足够好?
  3. 如果我已经从服务器渲染了行的标记,click #del事件是否仍会被捕获并在没有创建rowView的情况下执行某些操作?
  4. 'click #del'不应该更好地位于父视图中,以便 jQuery 可以在那里委派和附加行为吗?
  5. 这是否意味着我每行有 1 个行视图? 这是否意味着每行都在编译 _.template?还有其他选择吗?
    引用
  1. 将死亡,如果有其他引用指向它,则视图可以保留。
  2. 当不再需要时,您可以杀死视图,通常在不再可见时杀死视图。如果您的视图正在绑定任何事件,则必须在调用之前取消绑定 remove() : 用于管理主干网中视图的模式
  3. 必须实例化RowView实例才能捕获事件。
  4. 这取决于您要查找的行为,但是在您的示例中,我认为每个视图都必须捕获每个自己的click #del事件,如果您在父视图中声明事件,您如何知道要删除的行?
  5. 通常,您在视图定义中声明模板,并将其编译版本分配给this.template,如下所示:template: _.template( "hello: <%= name %>" ); .

最新更新