我一开始很复杂,无法弄清楚如何使用backbone.js在列表中创建列表。我终于得到了它,只需为我的应用程序中的所有玩家创建一个列表项视图。然后为我的应用程序内的所有团队创建了一个视图。
我通过创建一个将它们放在一起的应用程序视图“粘合”或“附加”在一起,两个视图都附加到应用程序视图根目录之前,每个语句都有一个,我附加了播放器列表项视图进入团队视野。让我告诉你。
这是我在应用视图中的渲染方法: 我只是不确定这是不是一个坏主意,我在想有更好的方法,但这是只有我取得成功的方法。这对我来说真的很有意义,我可以毫无问题地在每个视图上运行事件
render: function() {
var self = this;
this.teams.each(function(team) {
var teamView = new TeamView({ model: team });
var teamHtml = teamView.render().el;
var teamPlayers = this.players.where({team_id: team.get('id')})
_.each(teamPlayers, function(player) {
var playerView = new PlayerView({ model: player });
var playerHtml = playerView.render().el;
$(teamHtml).append(playerHtml);
}, this);
this.$el.append(teamHtml);
}, this);
return this;
},
我问过这个并被告知创建子视图会更好,我很确定这是一个子视图结构?这个方法有没有漏洞,如果是这样的话,我想解释为什么这个方法很糟糕以及我如何改进它。最后但并非最不重要的是,我确实关心干净的可维护代码,但最重要的是我teams
将其受尊重的players
与下面的HTML结果包装在一起。
<div>
<ul class="lakers">
<li>Kobe</li>
<li>Pau</li>
</ul>
<ul class="spurs">
<li>Tony</li>
<li>Tim</li>
</ul>
</div>
再次像一些建设性的批评,主要是 PROS &amp; CONS 连接这两个视图。在我继续前进之前需要问一下,我想确保在开始扩展时我没有养成坏习惯或在代码中产生问题,我相信你明白这一点。
答案 0 :(得分:0)
我问过这个并且被告知创建子视图会更好,我很确定这是一个子视图结构?
是的,你知道,TeamView
是子视图。然而,这是一个“僵尸视图”。它本身有什么用吗?视图应该负责呈现自身,包括附加其直接子视图,但不知道如何呈现其子视图,即,您应该将players
集合传递给{ {1}}并将以下逻辑移至TeamView
:
TeamView