2015-08-31 5 views
0

localStorage - объект, в котором многомерный массив, который я хочу итерации (localStorage.add), хранится вместе с другими массивами.Ng-repeat над многомерным массивом

<tr ng-repeat = "(key, value) in localStorage track by $index" ng-if = "localStorage.add.length > $index || localStorage.subject.length > $index || localStorage.emailContent > $index" > 
       <td> 
        <input type="checkbox" ng-checked="checkAllEmail" ng-model="selectedEmail"/> 
        <a href="#"> 
         <span class="glyphicon glyphicon-star-empty"></span> 
        </a> 
       </td> 

       <td > 
        {{localStorage.add[$index]}} 
       <td> 

       <td > 
        {{localStorage.subject[$index]}} 
       <td> 

       <td > 
        {{localStorage.emailContent[$index]}} 
       <td> 
     </tr> 

Это localStorage.add массив - [["Elizabeth","Caroline"],["Patricia"],["Madhu"]].

{{localStorage.add[$index]}} отображает

["Elizabeth","Caroline"]   
["Patricia"]    
["Madhu"] 

Я хочу только значения в пределах массива, который будет отображаться. Так, например, {{localStorage.add[1][0]}} отображает "Patricia", а не ["Patricia"]. Кто-нибудь есть идеи о том, как это реализовать? Я попробовал {{localStorage.add[$index][$index]}}, он отображает только Elizabeth ({{localStorage.add[0][0]}}), а не ["Elizabeth"]. Итак, я ищу что-то похожее на {{localStorage.add[$index][$index]}}, которое работает для всех элементов массива.

Чтобы избежать путаницы, мое приложение работает по своему желанию. Я просто не хочу, чтобы пользователь видел, что я храню эти значения в массиве. Это то, что конечный результат должен выглядеть следующим образом:

Elizabeth,Caroline  
Patricia 
Madhu 

ответ

0

Вы должны преобразовать массив в строку, так и в контроллере, сделать функцию, которая на ваш взгляд может позвонить и получить возвращенную строку, например:

<tr ng-repeat = "(key, value) in localStorage track by $index" ng-if = "localStorage.add.length > $index || localStorage.subject.length > $index || localStorage.emailContent > $index" > 
      <td> 
       <input type="checkbox" ng-checked="checkAllEmail" ng-model="selectedEmail"/> 
       <a href="#"> 
        <span class="glyphicon glyphicon-star-empty"></span> 
       </a> 
      </td> 

      <td> 
       {{getNames(localStorage.add[$index])}} 
      <td> 

      <td > 
       {{localStorage.subject[$index]}} 
      <td> 

      <td > 
       {{localStorage.emailContent[$index]}} 
      <td> 
</tr> 

Это будет в вашем контроллере, и вы можете изменить разделитель в случае необходимости

$scope.getNames = function(names){ 
    return names.join(',') 
} 

вы могли бы сделать это непосредственно в окне просмотра, как это:

localStorage.add[$index].join(',') 

но я не рекомендую, если он работает (не уверен)

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