我想知道在Backbone.js的一个集合中管理子模型视图一些通用的最佳实践模型视图管理。嵌套集合/ Backbone.js的中
到今天为止,我一直在使用下面的解决方案。只是想知道是否有其他人有这个,或更好的处理方式。目前为止我的工作很好,但我总是有兴趣学习更多&提炼我的代码。
CollectionView = Backbone.View.extend({
renderItem: function(model) { // instantiate view for an item
this.viewPointers[model.cid] = new this.itemView({ model: model });
this.$(".item-list").append(this.viewPointers[model.cid].render().el);
},
renderCollection: function() { // instantiate views for entire collection
var self = this;
this.removeAll(); // clear current references (if any exist)
this.collection.each(function(model){
self.renderItem(model);
});
},
removeItem: function(model) { // remove/delete an individual view object
this.viewPointers[model.cid].undelegateEvents();
this.viewPointers[model.cid].remove();
delete this.viewPointers[model.cid];
},
removeAll: function() { // remove/delete entire collection's view objects
var self = this;
_.each(this.viewPointers, function(view) {
self.removeItem(view.model);
});
}
});
我通常通过扩展CollectionView类来实现这一点。类似于
MyView = CollectionView.extend({
el: '#id',
viewPointers: {}, // reference to individual itemViews by model CID
itemView: views.SingleItem,
...
initialize: function() {
this.renderCollection();
},
});
是否有其他人有他们喜欢用于这种情况的东西?
将这项帮助:https://github.com/afeld/backbone-nested? – poseid
不 - 看起来像支持嵌套模型属性的库。这个问题是关于视图管理的,或者特别是在观看那些观看那些模型所盯着的集合的视图中观看单个模型的视图的管理。 – 1nfiniti