Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在集合中添加集合?_Javascript_Backbone.js - Fatal编程技术网

Javascript 如何在集合中添加集合?

Javascript 如何在集合中添加集合?,javascript,backbone.js,Javascript,Backbone.js,问题:我使用的是backbone.js,我有一个播放器视图,该视图的根元素是一个列表项节点 然后我有一个显示集合中所有玩家的players视图,该视图的根元素是。(非常简单的东西!) 这样做的结果将是 <ul> //The players collection root for the players collection view <li>Kobe Bryant is on the lakers</li> // The player model ro

问题:我使用的是backbone.js,我有一个
播放器
视图,该视图的根元素是一个
  • 列表项节点

    然后我有一个显示集合中所有玩家的
    players
    视图,该视图的根元素是
      。(非常简单的东西!)

      这样做的结果将是

      <ul> //The players collection root for the players collection view
          <li>Kobe Bryant is on the lakers</li> // The player model root element for the player model view
          <li>LeBron James is on the heat</li> // The player model root element for the player model view
      </ul>
      
      我如何循环(或做任何最好的事情)以使我的视图得到这样的结果

      <ul class="lakers"> 
          <li>Kobe Bryant is on the lakers</li>
      </ul>
      <ul class="heat"> 
          <li>LeBron James is on the heat</li>
      </ul>
      
      这显然存在一些问题,因为我们编写所有这些只是为了向根添加一个类,如果我们再次这样做,它将继续向根添加,这没有任何帮助


      我对想法缺乏兴趣,我得到了我知道我想对每个球员进行分类的图片,但我无法完全理解。我倾向于一个球员的团队集合,我只是不知道如何匹配
      this.team.get('name')==this.player.get('name')
      //与此相关的东西。我不确定这是否真的有意义,我承认我需要帮助,哈哈。祝大家感恩节快乐,我怀疑今天是否有人在stackoverflow上。

      嗯……你真的不需要与球员和球队比赛

      让我们从后端(数据)的角度考虑:

      你有一个球员模型和一个团队模型 一个球员属于一个团队,一个团队有很多球员。为了找到球员所属的球队,我们只需在球员模型中添加外键:team_id:

      团队id,是团队的id。通常您不想使用名称,因为:1。它可能会被更改,当您更改球队名称时,您不想更新所有球员。2、效率不高。(字符串字段与整数字段)ID始终是唯一的,您永远不应该更改它们

      假设你有科比和湖人

      //here's Kobe
      var kobe = {
        id: 24,  //yea, all models should have their own primary key - id
        name: 'Kobe',
        team_id: 3
      }
      
      //this is Lakers in the database
      var lakers = {
        id: 3,  //id for lakers,
        name: 'Lakers'
      }
      
      现在,你如何找到科比所属球队的名字

      比如说,您有一个团队集合(所有团队)

      你可以将玩家包装在团队中,或者将团队分配给玩家,但你不必这样做。这实际上取决于你的应用程序的主要用途。(或视图)在一些大型应用程序中,你可能会发现人们将团队包装成玩家实例的地方,以及其他玩家包装成团队的地方

      就你而言,你似乎还没有决定如何处理你的观点。而且,将两个集合传递到一个视图中并没有错(但当您必须这样做时,通常意味着您需要重新考虑如何组织页面)

      实例化视图时,传递两个集合:

      var playersView = new PlayersView({
        players: players,
        teams: teams
      });
      
      在模板中,如果您只是列出所有玩家:

      <% _.each(players, function(player) {
         <% var team = teams.get(player.get('team_id'))%>
         <%= player.get('name') %> belongs to <%= team.get('name') %>
      }) { %>
      

      你好,玉蕊,这听起来很好,这次好多了。设置团队关键点确实很有意义。在过去的24小时里,我一直在认真学习,一遍又一遍地看教程,我开始明白了。我想这可能是解决方案,让我结束。好的,我通读了,这听起来很好。是时候喝杯咖啡,让它充满活力了!:)再次感谢Yurui这是更好的,有意义的,可能是因为我所做的所有研究,但这一切都在一起。我不知道你们怎么会这么擅长编程。不客气。:)做是最好的学习方式。(IMO)我没有很长的主干编码历史(大约1年)主干是一个很棒的库(而且很有趣!)。我喜欢我用骨气做的每一个项目。尽管我不再在我当前的项目中使用它,但我会继续回来并从中学习。祝你好运顺便说一句,我建议从我的一个朋友那里读这篇文章。他是一个超级聪明的开发者,我从他身上学到了很多。好的,我会的。。。我想我需要继续重读这篇文章,但到目前为止,我无法通过
      players:
      teams:
      仅通过
      collection:
      var playersView=new playersView({collection:playersCollection,players:playersCollection,teams:teamscolection})
      
      //here's Kobe
      var kobe = {
        id: 24,  //yea, all models should have their own primary key - id
        name: 'Kobe',
        team_id: 3
      }
      
      //this is Lakers in the database
      var lakers = {
        id: 3,  //id for lakers,
        name: 'Lakers'
      }
      
      var teams = new Teams([ ..all the teams! .. ]);
      
      //to find the name of the team
      
      teams.get(kobe.get('team_id')).get('name');  // you find the model first, then read its name.
      
      PlayersView = Backbone.View.extend({
      
        initialize: function(options) {
          //in case teams/players is not passed to the view, we just set them to empty collections
          this.teams = options.teams || new Teams([]);
          this.players = options.players || new Players([]);
        }
      
      });
      
      var playersView = new PlayersView({
        players: players,
        teams: teams
      });
      
      <% _.each(players, function(player) {
         <% var team = teams.get(player.get('team_id'))%>
         <%= player.get('name') %> belongs to <%= team.get('name') %>
      }) { %>
      
      <% _.each(teams, function(team) {
         <ul class="<%= team.get('name')%>">
           <% var teamPlayers = players.where({team_id: team.get('id')}) %>
               <% _.each(teamPlayers, function(player) {
                 <li>
                   <%= player.get('name') %> belongs to <%= team.get('name') %>
                 </li>
               <% }) %>
         </ul>
      }) { %>
      
       //this is a view for a Team, it's model should be Team
       TeamView = Backbone.View.extend({
         className: function() {
           return this.model.get('name');
         }
       });