Привязка списка с разделителями к DOM AngularJS

#javascript #angularjs #data-binding #ionic-framework #angularjs-ng-repeat

#javascript #angularjs #привязка к данным #ionic-framework #angularjs-ng-repeat

Вопрос:

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

 {
   'street1':{
      '1':[ 'name1', 'name2', 'name3' ] ,
      '2':[ 'name1', 'name2', 'name3' ]
   },
   'street2':{
      '1':[ 'name1', 'name2', 'name3' ] ,
      '2':[ 'name1', 'name2', 'name3' ]
   }
}
  

Javascript:

     var tmp = {};
    for (i = 0; i < Names.length; i  ) {
        var street = Names[i].Street;
        var num = Names[i].Number;
        var name = Names[i].Name;
        if (tmp[street] == undefined) {
            tmp[street] = {};

        }
        var str = tmp[street];
        if (str[num] == undefined) {
            str[num] = [];
        }
        str[num].push(name);
    }
    var $scope.filteredTerrInfo = tmp;
  

HTML:

      <ion-list data-ng-repeat="(street, numbers) in filteredTerrInfo">

        <div class="item item-divider">
            <h2> {{street}}</h2>
        </div>

        <div class="item item-divider" data-ng-repeat="(number, names) in numbers">
            <h2>{{number}}</h2>
        </div>

        <div class="item item-left-thumbnail" data-ng-repeat="x in names">
            <h2>{{x}}</h2>
        </div>
    </ion-list>
  

Приведенный выше код отображает разделители улиц и номеров, но не может отобразить список имен. Есть идея?

Ответ №1:

Это потому, что names значение недоступно, поскольку data-ng-repeat="x in names" находится вне data-ng-repeat="(number, names) in numbers" цикла. Попробуйте изменить шаблон на:

 <div class="item item-divider" data-ng-repeat="(number, names) in numbers">
   <h2>{{number}}</h2>
   <div class="item item-left-thumbnail" data-ng-repeat="x in names">
      <h2>{{x}}</h2>
   </div>
</div>