渲染后的主干布局管理器

时间:2012-12-10 11:31:26

标签: javascript backbone.js backbone-layout-manager

我正在使用Backbone和布局管理器。我在MyView.js中有这个代码:

afterRender: function() {
    var scope = this;
    this.model.get("books").each(function(bookModel) {
            var bookView = new BookView({
                model: bookModel
            });
            scope.insertView(".books", bookView).render();
    });
},

在BookView.js中我有afterRender方法:

afterRender: function() {
    console.log("after render");
},

我在模型的books属性中有6个项目,我为每本书调用render()。最终我得到的是“渲染后”只记录一次。怎么了?丢失5“渲染后”日志在哪里?

1 个答案:

答案 0 :(得分:0)

上面的代码是在MyView的afterRender方法中调用的。由于未知原因,许多人render()逐个调用不会调用每本书的afterRender() 在LayoutManager文档中反复阅读后,我意识到我需要在insertView()方法中调用beforeRender()而不渲染视图。这样render()将呈现所有子视图,并且afterRender()将被正确调用:

beforeRender: function() {
    var scope = this;
    this.model.get("books").each(function(bookModel) {
            var bookView = new BookView({
                model: bookModel
            });
            scope.insertView(".books", bookView);
    });
},