2015-01-21 5 views
0

я создал несколько фиктивных ДАННЫХ, что я буду использовать в моем угловом проекте приложения со следующей структурой:angularjs доступ к многомерным данным массива

var videos = [ 
     { 
      category: 
      [ 
       { explainer: 
        [ 
         'explain1', 
         'explain2', 
         'explain3', 
        ] 
       }, 
       { cartoon: 
        [ 
         'cartoon1', 
         'cartoon2', 
         'cartoon3', 
        ] 
       }, 
       { moGraph: 
        [ 
         'moGraph1', 
         'moGraph2', 
         'moGraph3', 
        ] 
       }, 
      ] 

     } 
    ]; 

Хорошо вот то, что я хочу сделать с данными:

  1. отображения названия категории (объяснителя, мультфильмы, MoGraph)
  2. дисплей дАННЫЕ внутри каждой категории (напр., когда пользователь выбирает MoGraph, все имеющиеся данные под MoGraph будут показаны)

Я пытался использовать <ng-repeat="video in videos track by $index"> но я только управлять, чтобы сделать его работать на одномерный массив типа (var projects = [ 'proj1', 'proj2', 'proj3'];)

Im действительно путают о том, как это сделать, пожалуйста, просветите thanks'much

+0

Ваш формат данных довольно непригоден. Почему так много массивов? Я не могу придумать чистый способ получить имя ключа из каждого объекта массива 'category'. Теперь, если 'category' были просто объектом с ключами, это было бы работоспособно, то есть' category: {explainer: [...], cartoon: [...], moGraph: [...]} ' – Phil

ответ

1

Похоже вам просто нужно иметь много вложенных репитеров. Например ...

Лично я хотел бы изменить формат данных, чтобы смотреть больше как это ...

var videos = [ 
    { 
     explainer: ['explain1', 'explain2', 'explain3'], 
     cartoon: ['cartoon1', 'cartoon2', 'cartoon3'] 
     moGraph: ['moGraph1', 'moGraph2', 'moGraph3'] 
    } 
]; 

Тогда все, что вам нужно ...

<div ng-repeat="video in videos"> 
    <div ng-repeat="(category, datas) in video"> 
     <h3>{{ ::category }}</h3> 
     <ul> 
      <li ng-repeat="data in datas">{{ ::data }}</li> 
     </ul> 
    </div> 
</div> 
+0

hi Phil , спасибо, что нашли время ответить, я действительно ценю это. Еще одна вещь: использование двойной толстой кишки внутри углового выражения {{:: category}} просто любопытно, потому что я попытался удалить вещь, но результат остается тем же. ^^ –

+1

Двойной двоеточие представляет собой одноразовую привязку, доступную только в Angular 1.3+, аналогичную директивам типа bind-once. В отличие от стандартного двустороннего связывания модель не просматривается и не будет обновляться, если произойдет смена. – Enzey

Смежные вопросы