取決於你實際擁有多少個模型,你將在哪裏存儲它們,以及它們如何在UI中呈現將取決於你如何着手解決這個問題。
如果有很多模型存儲在遠程服務器上的數據庫中,並且組的項目將分別渲染,那麼一種方法是按需加載組的項目。也許像...
var Item = Backbone.Model.extend({});
var ItemColleciton = Backbone.Collection.extend({
url: '/load-items',
});
var Group = Backbone.Model.extend({
items: new ItemCollection(),
initialize: function() {
// load the groups items as the group is initialized
this.items.fetch({data:{groupID:this.id}});
}
});
或者,如果你有較少的車型,大家不妨來加載它們一次全部,並使用過濾來填充組。像這樣...
var Item = Backbone.Model.extend({});
var ItemColleciton = Backbone.Collection.extend({
url: '/load-groups',
});
var Group = Backbone.Model.extend({
initialize: function() {
// load the groups items as a subset of the already loaded group collection
this.items = new ItemCollection(allItems.filter(function(item) {
return item.GroupID = this.id;
}, this));
}
});
// in your router init ...
var allItems = new ItemCollection();
allItems.fetch();
以上只是示例方法。我在使用骨幹一段時間後發現,它的解釋真的很開放,可以用不同的方式解決不同的問題。
您也不妨查看backbone relational。我自己並沒有使用它,但相信它增加了對模型和集合之間映射關係的支持。
我最終根據你的建議使用了一個稍微不同的實現。再次感謝! – dSquared 2012-05-16 21:31:07