【问题标题】:Angular Data Structuring角度数据结构
【发布时间】:2016-01-26 20:15:01
【问题描述】:

我是 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...

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

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

  { // 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[] 数组的球员创建一个全新的数组。理想情况下,我希望一切都连接起来。

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

抱歉,这有点啰嗦 - 如果我知道如何更简洁地表达我的问题,我会的!

这里的任何建议都将不胜感激。提前致谢。

【问题讨论】:

    标签: arrays angularjs object data-structures display


    【解决方案1】:
    Var clubs = [
        {
             Name : "clubname",
             Players: [
                  {
                        Name: "name"
                  },
                  {
                        Name:"othername"
                  }
    
              ];
        }
    ];
    
    enter code here
    

    【讨论】:

    • 花时间解释为什么最好使用这个数据结构。 OP 不太可能理解只是看到一堆 JSON(来自评论)
    【解决方案2】:

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

    $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

    【讨论】:

    • 谢谢。通常情况下,现在您已经解释了它看起来很简单!感谢你的帮助。虽然不确定如何在 Angular 中添加 Id...
    猜你喜欢
    • 1970-01-01
    • 2018-01-12
    • 1970-01-01
    • 2020-01-23
    • 1970-01-01
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多