Backbone.js запускает рендеринг дважды при добавлении коллекции.

Я работаю с примером приложения Todos в комплекте с последней версией Backbone(0.9.2 ), изучая Backbone.js. Мой вопрос: почему приложение предназначено для запуска события рендеринга дважды при добавлении модели в коллекцию Todos?

Если я помещу эту строку в функцию рендеринга TodoView:

// Re-render the titles of the todo item.
render: function() {
  console.log("Rendering!");
  this.$el.html(this.template(this.model.toJSON()));

Затем "Визуализация!" появляется дважды в консоли. Я понимаю, что это связано с тем, что представление связывает событие изменения модели с рендерингом представления :

initialize: function() {
  this.model.bind('change', this.render, this);

. И рендеринг вызывается в addOne, который привязан к событию добавления Todos :

addOne: function(todo) {
  var view = new TodoView({model: todo});
  this.$("#todo-list").append(view.render().el);
},

. Но является ли эта двойная визуализация стандартной практикой дизайна? Кажется, что представление должно отображаться при создании (или входе в DOM ), а затем снова, если базовая модель изменяется. В этом случае ничего не меняется, но рендер вызывается дважды.

Опять же, я только изучаю Backbone, поэтому у меня может быть базовое непонимание, которое приводит меня в замешательство.

8
задан fguillen 19 April 2012 в 15:03
поделиться