Backbone重新订购一个集合,以便家庭永远是第一位的?

时间:2014-05-10 23:05:36

标签: javascript backbone.js comparator

我做了FIDDLE

在我的主应用程序中,当将home团队更改为新团队时,如果集合中的模型位于底部,则无论是在家还是离开,它都将呈现在底部。

我想使用比较器在具有home属性的模型前面使用away属性设置模型,以便渲染时的顺序始终为home - >程。

这很好,所以我不必做任何DOM操作,只需让模型的顺序处理我的UI。

示例集合

var teams = new TeamsCollection([
    { team_name: 'bulls', playing: true, side: 'home' },
    { team_name: 'wizards', playing: true, side: 'away' },
    { team_name: 'spurs', playing: false, side: null }
]);

然后我有一些逻辑来限制我传递给我的视图的模型,视图只会呈现team_name: 'bulls'team_name: 'wizards'

公牛已经在家了所以它已经排在第一位了,然后客场大师就在下面。我想让主队成为第一支球队。

因此,当您想要将主队更改为spurs时,我会有重新呈现集合的逻辑,例如set team_name: 'bulls'playing: false, side: null和马刺到playing: true, side: 'home'

由于马刺模型是集合中的最后一个模型,它将在远离向导下呈现。我知道这可以通过使用比较器来改变,但我有点困惑,因为我没有添加,我正在设置。

1 个答案:

答案 0 :(得分:2)

在您更改了任何模特的属性后,调用teams.sort()根据比较器重新排序。