Backbone.js 主干中的比较器嵌套模型?
如果在主干集合上使用比较器,我是否能够将具有相同属性的模型嵌套到div中?例子Backbone.js 主干中的比较器嵌套模型?,backbone.js,Backbone.js,如果在主干集合上使用比较器,我是否能够将具有相同属性的模型嵌套到div中?例子 // My dummy json [{name: 'Robert', team: 'Redskins'},{name: 'Aaron', team: 'Packers'},{name: 'Kirk', team: 'Redskins'}] 这是我的收藏 var Players = Backbone.Collection.extend({ url: 'data/players.json', compa
// My dummy json
[{name: 'Robert', team: 'Redskins'},{name: 'Aaron', team: 'Packers'},{name: 'Kirk', team: 'Redskins'}]
这是我的收藏
var Players = Backbone.Collection.extend({
url: 'data/players.json',
comparator : 'team'
});
我觉得这很酷,因为在我的渲染视图中,我看到模型是按团队顺序列出的,例如
<div>
<li>Robert</li>
<li>Redskins</li>
</div>
<div>
<li>Kirk</li>
<li>Redskins</li>
</div>
<div>
<li>Aaron</li>
<li>Packers</li>
</div>
现在让我们来谈谈肉,下面的例子是,将团队组织成一个巢穴的最干净的方式是什么
<div class="Redskins">
<div>
<li>Robert</li>
<li>Redskins</li>
</div>
<div>
<li>Kirk</li>
<li>Redskins</li>
</div>
</div>
<div class="Packers">
<div>
<li>Aaron</li>
<li>Packers</li>
</div>
</div>
罗伯特
红人
柯克
红人
亚伦
包装工
如果不分析/处理数据,我真的想不出任何方法来实现这一点。您可以劫持toJSON()方法或添加一个新方法。例如:
var Players = Backbone.Collection.extend({
url: 'data/players.json',
comparator : 'team',
toJSON: function() {
var team,
index = 0,
grouped = [],
raw = _.clone(this.attributes);
_.each(raw, function(element) {
var thisTeam = element.team;
if (thisTeam != team) { // create new grouping
grouped[index] = {
team: thisTeam,
players: []
}
grouped[index].players.push(element.name);
index++;
} else { // use existing grouping
grouped[index].players.push(element.name);
}
});
return grouped;
}
});
警告:这是未经测试的代码,仅供说明。无论如何,这段代码将为您提供一些JSON,如:
[
{
team: "Packers",
players: ["Aaron"]
},
{
team: "Redskins",
players: ["Robert", "Kirk"]
}
]
以下是一个示例把手模板:
{{#each this}}
<div class="{{team}}">
<div>
{{#each players}}
<li>{{this}}</li>
{{/each}}
</div>
</div>
{{/each}}
{{{#每个this}
{{{#每个玩家}
{{this}}
{{/每个}}
{{/每个}}
很抱歉回复晚了,我打了个盹儿。好的,很有意思,但是有了这个,我该如何设置HTML被包装这是我很困惑的地方,我不知道如何在包装器div中获得一组项目。你用什么做模板?我将更新我的答案,以显示我使用的车把模板代码。我很想进入车把领域,但我之所以使用下划线,是因为我对主干线来说是一个全新的概念,我现在就知道了,但我很难超越它进入高级领域。我感谢你的努力,这真的很重要!哈哈,不用担心。就在几个月前,我还完全不明白这一点。第一个月是最糟糕的一个月,因为有太多的新概念需要你去思考。还有很多东西要学,但至少现在我不觉得自己是个十足的白痴。请确保在team:thistteam
{{#each this}}
<div class="{{team}}">
<div>
{{#each players}}
<li>{{this}}</li>
{{/each}}
</div>
</div>
{{/each}}