我有点卡住了,我正在使用backbone.js下面的代码返回一个模型数组,见下图。
//The array of objects
var teamPlayers = this.players.where({team_id: team.get('id')})
players
是一个集合。而不是说this.players.each(function(models){ //code here })
我想说teamPlayers.each(function(models){ //code here })
之类的东西。所以我可以关联两个与其ID匹配的集合
我可以在模板中成功完成此操作,但我需要将我的团队视图与我的播放器视图分开,然后在应用视图中呈现它。
这是我试图获得这样结果的模板。
<script type="text/template" id="allTemplate">
<% _.each(teams, function(team) { %>
<div class="<%= team.name %>">
<h1><%= team.name %></h1>
<% var teamPlayers = _.where(players, {team_id: team.id}) %>
<% _.each(teamPlayers, function(player) { %>
<li> <%= player.name %> </li>
<% }); %>
</div>
<% }); %>
</script>
所以我试图将该模板转换为javascript,以便我可以在视图中为每个模板执行操作。
额外:这是每个集合代码的样子
this.teams.each(function(team) {
var teamView = new TeamView({ model: team });
var teamHtml = teamView.render().el;
this.$el.append(teamHtml);
var teamPlayers = this.players.where({team_id: team.get('id')})
console.log(teamPlayers)
this.players.each(function(player) {
var playerView = new PlayerView({ model: player });
var playerHtml = playerView.render().el;
this.$el.append(playerHtml);
console.log(player.toJSON());
}, this);
}, this);
编辑:我只是想添加我遇到这个Backbone.js Uncaught TypeError: Object [object Array] has no method 'on'这有点意义但我无法弄清楚如何将这个答案应用到我的项目以及我创建模式的方式。
答案 0 :(得分:1)
_。其中返回一个数组,而不是Backbone.Collection,所以转:
this.players.each(function(player) {
到
_.each(teamPlayers, function(player) {