Я пытаюсь поддерживать коллекцию Backbone.js в актуальном состоянии с учетом того, что происходит на сервере.
Мой код похож на следующий:
var Comment = Backbone.Model.extend({});
var CommentCollection = Backbone.Collection.extend({
model: Comment
});
var CommentView = Backbone.View.extend({ /* ... */ });
var CommentListView = Backbone.View.extend({
initialize: function () {
_.bindAll(this, 'addOne', 'addAll');
this.collection.bind('add', this.addOne);
this.collection.bind('refresh', this.addAll);
},
addOne: function (item) {
var view = new CommentView({model: item});
$(this.el).append(view.render().el);
},
addAll: function () {
this.collection.each(this.addOne);
}
});
var comments = new CommentCollection;
setInterval(function () {
comments.fetch();
}, 5000);
Что происходит? при получении комментариев вызывается refresh
, те же комментарии в нижней части CommentListView
- чего я и ожидал от приведенного выше кода.
What I ' Я хочу знать, как лучше всего «обновить» представление без потери «локального состояния».