Могу ли я использовать ng-switch с ng-repeat? - PullRequest
2 голосов
/ 03 октября 2019

У меня есть массив с именем $scope.sectionList:

0: {id: "1", section_name: "About me (in detail)"}
1: {id: "2", section_name: "About me (single word)"}
2: {id: "3", section_name: "My freaky side (in detail)"}
3: {id: "4", section_name: "My freaky side (single word)"}
4: {id: "5", section_name: "Embarrassing (in detail)"}
5: {id: "6", section_name: "Embarrassing (single word)"}

Я хочу использовать ng-switch для отображения каждого раздела один за другим. Вот что я пробовал:

<div ng-switch="myVar">
  <div ng-repeat="section in sectionList" ng-switch-when='{{section.id}}' class="animate-switch-container">
    <div class="col-md-12 grid-margin stretch-card" >
      <div class="card">
        <div class="card-body" >
          <h4 class="card-title">{{section.section_name}} {{section.id}}</h4>
          <button type="button" class="btn btn-primary" ng-click="next(section.id)">Start</button>
        </div>
      </div>
    </div>
  </div>
  <div ng-switch-default>
    <h1>Switch to next section</h1>
    <button type="button" class="btn btn-primary" ng-click="next(1)">Start</button>
  </div>
</div>

, а затем next() функция:

$scope.myVar = '';
$scope.next = function (myVar) {
  $scope.myVar = myVar;
}; 

Но это не похоже на работу. Если я удаляю ng repeat и вручную добавляю разделы, это похоже на работу. Есть ли способ использовать ng-repeat с ng-switch?

1 Ответ

2 голосов
/ 03 октября 2019

ng-switch с ng-repeat не будет отображать каждый раздел один за другим. Одним из решений было бы использование filter в режиме нг-повтора, например:

<div ng-repeat="section in sectionList | filter: {id: myVar}" class="animate-switch-container">
    <div class="col-md-12 grid-margin stretch-card">
        <div class="card">
            <div class="card-body">
                <h4 class="card-title">{{section.section_name}} {{section.id}}</h4>
                <button type="button" class="btn btn-primary" ng-click="next(section.id)">Start</button>
            </div>
         </div>
    </div>
</div>

Проверьте рабочую демонстрацию: DEMO

...