Угловое структурирование данных

0

Я новичок в 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[]. В идеале я хочу, чтобы все это было связано.

Является ли ng-repeat достаточным для доступа к данным модели в этих случаях или требуется более сложная директива? Я ищу для создания информации, поэтому ее легко обновить и отобразить данные в представлении.

Извините, это немного затянуло - если бы я знал, как более кратко сформулировать свою проблему, я бы!

Любые советы здесь будут широко оценены. Заранее спасибо.

Теги:
object
arrays
data-structures
display

2 ответа

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

          ];
    }
];

enter code here
  • 1
    Потратьте время на объяснение, почему лучше использовать эту структуру данных. ОП вряд ли поймет, просто увидит кучу JSON (из обзоров)
  • 0
    Ты прав. Был немного в спешке.
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 для объекта и добавить свойство Id

  • 0
    Благодарю. Как это часто бывает, кажется, теперь все так просто, как ты это объяснил! Ценю твою помощь. Хотя не уверен, как добавить Id в Angular ...
  • 0
    @ Paulos3000 проверьте мой ответ на редактирование

Ещё вопросы

Сообщество Overcoder
Наверх
Меню