Загружать данные из помощников до рендеринга ng-класса

Я работаю над проектом, используя Meteor и AngularJs.

Я получаю некоторые данные с помощью помощников, а затем использую ng-repeat, чтобы показать их.

Я использую модель контрольного списка (http://vitalets.github.io/checklist-model/), чтобы получить список вариантов флажка.

<li ng-repeat="t in types">
  <div ng-class="nametagClass(t)">{{t.name}}</div>
  <input type="checkbox" data-checklist-value="t" 
         data-checklist-model="chosenTypes" class="sub-checkbox" />
</li>

вот функция ng-класса:

$scope.nametagClass=function(type){
            if($scope.chosenTypes.indexOf(type)>-1){
                return "nametag active-nametag";
            }

            return "nametag";
        }

Проблема в том, что когда ng-класс вызывает функцию, данные из selectedTypes еще не загружены, поэтому проверенные элементы не получают класс «active-nametag». (Однако, когда данные загружаются и проверяются элемент, класс меняется просто отлично)

Как я могу отложить вызов функции ng-класса после загрузки данных?


person younes sofiane    schedule 31.03.2016    source источник


Ответы (2)


Просто добавьте ng-if во внешний элемент, подобный этому

<li ng-if="types" ng-repeat="t in types">
  <div ng-class="nametagClass(t)">{{t.name}}</div>
  <input type="checkbox" data-checklist-value="t" data-checklist-model="chosenTypes" class="sub-checkbox" />
</li>
person byteC0de    schedule 31.03.2016

ngIf был бы вариант. Я думаю, что вы также можете использовать ngCloak:

Директива ngCloak используется для предотвращения краткого отображения html-шаблона Angular браузером в необработанном (нескомпилированном) виде во время загрузки вашего приложения.

person 6324    schedule 31.03.2016