Я новичок в 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 достаточным для доступа к данным модели в этих случаях или требуется более сложная директива? Я ищу для создания информации, поэтому ее легко обновить и отобразить данные в представлении.
Извините, это немного затянуло - если бы я знал, как более кратко сформулировать свою проблему, я бы!
Любые советы здесь будут широко оценены. Заранее спасибо.
Var clubs = [
{
Name : "clubname",
Players: [
{
Name: "name"
},
{
Name:"othername"
}
];
}
];
enter code here
Вы можете поместить объекты внутри объектов, и пример будет выглядеть так:
$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