角度数据结构

时间:2016-01-26 20:15:02

标签: arrays angularjs object data-structures display

我是Angular的新手,如果这似乎是一个显而易见的问题,请提前道歉......

我知道如何使用ng-repeat指令显示简单的对象数组,但我不确定如何构建更复杂的信息层。

例如:如果我想列出英超足球俱乐部,我可以简单地创建一系列对象,阵列列表俱乐部,每个俱乐部都是一个对象,包含各种信息的关键值对或与之相关的数据。那个俱乐部:

$scope.clubs = [

  {
    name: "Arsenal",
    nickname: "Gunners",
    clubBadge: "arsenal.jpg",
    founded: "1886"
  },
  {
    name: "Newcastle United",
    nickname: "Magpies",
    clubBadge: "newcastle.jpg",
    founded: "1892"
  } 
  // etc...
]

没关系。但那时我可能想要列出每个俱乐部内的球员。例如:

  // the following being the team of Newcastle United...
  {
    GK: "Rob Elliot",
    LB: "Paul Dummett",
    CB: "Fabricio Coloccini",
    CB: "Chancel Mbemba",
    RB: "Daryl Janmaat",
    LW: "Andros Townsend",
    MF: "Georginio Wijnaldum",
    MF: "Jack Colback",
    RW: "Moussa Sissoko",
    ST: "Ayoze Perez",
    ST: "Aleksander Mitrovic",
  }; // and so on for other clubs...

如果它只是无序数组中的随机索引,我如何将上述对象附加到原始数组中的Newcastle Utd(以及其他俱乐部)?从整体上构建这些信息的正确方法是什么?

我可以通过提供每个玩家的统计数据来进一步实现这一点,例如:

  { // stats for Moussa Sissoko
    speed: "86",
    ballControl: "71",
    strength: "85",
    vision: "79"
  } 
  { // stats for Ayoze Perez
    speed: "78",
    ballControl: "83",
    strength: "69",
    vision: "78"
  } 

同样,我已将这些列为单个对象。但我不知道将它们连接到各自的俱乐部的阵列,或者如何连接每个阵列(假设有三个独立的阵列:$scope.clubs$scope.players$scope.attributes) 。

如果Newcastle Utd是阵列中的第10个俱乐部,它将是$scope.clubs[9],但我不想为没有$scope.clubs[]链接的玩家创建一个全新的阵列。 1}}数组。理想情况下,我希望将它们全部连接起来。

在这些情况下,ng-repeat是否足以访问模型数据,还是需要更复杂的指令?我希望构建信息,以便在视图中更新和显示数据。

对不起,这有点啰嗦 - 如果我知道如何更简洁地说出我的问题,我会的!

这里的任何建议都会受到大力赞赏。提前谢谢。

2 个答案:

答案 0 :(得分:0)

Var clubs = [
    {
         Name : "clubname",
         Players: [
              {
                    Name: "name"
              },
              {
                    Name:"othername"
              }

          ];
    }
];

enter code here

答案 1 :(得分:0)

您可以将对象放在对象中,示例将如下所示:

$scope.clubs = [
{
    name: "Arsenal",
    nickname: "Gunners",
    clubBadge: "arsenal.jpg",
    founded: "1886",
    players: [
         {
             //all the player stuff
         },
         {
             //Other player stuff
         }
         //Continue with all the players
    ]
},
{
    name: "Newcastle United",
    nickname: "Magpies",
    clubBadge: "newcastle.jpg",
    founded: "1892",
    players: [
         {
             //all the player stuff
         },
         {
             //Other player stuff
         }
         //Continue with all the players
    ]

} 
// etc...
]

你可以这样访问$scope.clubs[0].players,我建议你给俱乐部一个Id,这样就可以更方便地使用数据了。要执行此操作,如果您有权访问源代码,则可以从该处添加,如果没有,则可以在对象上使用foreach loopadd the Id property