Менеджер компоновки магистрали после рендера
Я использую Backbone и Layout Manager. У меня есть этот код внутри 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");
},
У меня есть 6 пунктов в собственности книг модели, и я звоню render()
за каждую книгу. В конце концов, я получаю "после рендеринга" только один раз. Что случилось? Где недостающие 5 "после рендеринга" логов??
1 ответ
Приведенный выше код вызывался внутри метода afterRender MyView. По неизвестным причинам много звонков 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);
});
},