我有一个视图应该为所有团队中最大points
的玩家渲染模型。有很多方法可以做到这一点,但这是我要走的路。
getMax : function(attribute) {
return this.collection.max(function (team) {
//return team.get('players').get(attribute);
var test = new PlayersCollection(team.get('players'));
console.log(test)
}, this);
},
这是一个用于团队的木偶集合视图(很好的复合,但它的工作方式就像一个集合)。我理解为什么test
会返回每个团队的玩家,但我想不出将所有玩家合并为一个集合然后查询谁是max points
领导者的方法。
那说如果有办法确定谁是领导者,我可以避免首先将它们合并,但由于这个集合是嵌套的,我有点难过。
由于this.collection
是团队,我认为像this.collection.get('players').get('points')
这样的东西可以让我获得所有团队的最大价值,但这不起作用。
奇怪的解决方案1 我做了一点点黑客攻击并想出了这个。很多问题因为它剥离了主干功能意味着我不能返回最大玩家的模型,只有那个玩家的分数,就是这样......仍在思考(大脑出血哈哈)
teams = App.data.teams
var points1 = teams.get('5368dcc1227a937829b2cb4a').players.pluck('points')
console.log(points1)
var points2 = teams.get('5368dcd9227a937829b2cb4c').players.pluck('points')
console.log(points2)
var test = points1.concat(points2);
console.log(test)
var maxi = _.max(test);
console.log(maxi)
稍微好一点的解决方案2 合并对象数组
teams = App.data.teams
var home = teams.get('5368dcc1227a937829b2cb4a').players.models;
var away = teams.get('5368dcd9227a937829b2cb4c').players.models;
all = home.concat(away);
console.log(all)
答案 0 :(得分:1)
我认为你要找的是这样的:
_.max(this.collection.get('players').pluck('points'));
答案 1 :(得分:0)
好吧所以我觉得我设法创造了一个有点优雅的解决方案,在控制台玩游戏可以真正教你很多(如果你想要变得更好,强烈推荐)。
teams = App.data.teams
var home = teams.get('5368dcc1227a937829b2cb4a').players.models;
var away = teams.get('5368dcd9227a937829b2cb4c').players.models;
all = home.concat(away);
leaders = new PlayersCollection(all)
function mostPoints() {
return leaders.max(function(leader) {
return leader.get('points');
});
}
mostPoints();
现在该功能将返回每个人中得分最多的玩家的模型,非常酷!