1

我正在使用主干和布局管理器。我在 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 个“渲染后”日志在哪里?

4

1 回答 1

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);
    });
},
于 2012-12-10T17:39:39.833 回答