Backbone.js 主干中的比较器嵌套模型?

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

如果在主干集合上使用比较器,我是否能够将具有相同属性的模型嵌套到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',
    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}}