我有一个需要渲染的结构。它有线性类型:
{districts : [
{
name : "D17043"
},
{
name : "D91832"
},
{
name : "D32435"
}
],
buildings : [
{
name : "B14745",
district: "D17043",
address: "1st str"
},
{
name : "B14746",
district : "D91832",
address : "1st str"
},
{
name : "B14747",
district : "D17043",
address : "1st str"
}
]
}
简化看起来好一点。地区附有建筑物。可能,结构可能是嵌套的,但我认为这会产生额外的麻烦,而且,由于这个“树”没有结构化,我制作了简单的对象。 问题是 - 如何与骨干一起正确显示? 现在它看起来像这样(一些细节留在幕后):
App.Collections.Districts = Backbone.Collection.extend({
model : App.Models.District
});
var districtsCollection = new App.Collections.Districts(data.districts);
var districtsView = new App.Views.Districts({collection : districtsCollection});
然后在区域集合视图中的某个地方,我们创建一个循环来创建单个区域的视图:
var districtView = new App.Views.District({model : district});
在单个区域的view
内,我用render
方法调用另一个集合:
App.Views.District = Backbone.View.extend({
tagName : 'div',
className : 'districtListElement',
render : function () {
this.$el.html(this.model.get('name'));
var buildingsCollection = new App.Collections.Buildings(allData.buildings);
buildingsCollection.each(function(item){
if (item.get('district') == this.model.get('name')) {
var buildingView = new App.Views.Building({model : item});
this.$el.append(buildingView.render().el);
}
}, this);
return this;
}
});
这件事有效但不是有点令人毛骨悚然吗?也许有一个正确的方法来做到这一点?特别是如果我有其他实例在建筑物内。 谢谢。