Backbone.jsについて学びながら、最新バージョンのBackbone(0.9.2)にバンドルされているTodosサンプルアプリケーションを使用しています。私の質問は、Todosコレクションにモデルを追加するときにアプリがレンダリングイベントを2回発生させるように設計されているのはなぜですか?
この行をTodoViewのレンダリング関数内に配置すると、次のようになります。
// Re-render the titles of the todo item.
render: function() {
console.log("Rendering!");
this.$el.html(this.template(this.model.toJSON()));
次に「レンダリング!」コンソールに2回表示されます。これは、ビューがモデルの変更イベントをビューのレンダリングにバインドするためだと理解しています。
initialize: function() {
this.model.bind('change', this.render, this);
そして、renderはaddOneで呼び出され、Todosのaddイベントにバインドされます。
addOne: function(todo) {
var view = new TodoView({model: todo});
this.$("#todo-list").append(view.render().el);
},
しかし、このダブルレンダリングデザインは標準的な方法ですか?ビューは作成時(またはDOMへの入り口)にレンダリングする必要があり、基になるモデルが変更された場合は再度レンダリングする必要があるようです。この場合、何も変更されていませんが、renderが2回呼び出されています。
繰り返しになりますが、私はバックボーンを学んでいるだけなので、混乱につながる基本的な誤解があるかもしれません。