在 ng-class 渲染之前从助手加载数据

Load data from helpers before ng-class renders

我正在使用 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-class 函数:

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

            return "nametag";
        }

问题是,当 ng-class 调用函数时,来自 chosenTypes 的数据还没有加载,所以被检查的元素没有得到 "active-nametag" class. (然而,当数据加载并检查一个元素时,class 变化得很好)

如何在加载数据后延迟 ng-class 函数调用?

像这样在外部元素中添加一个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>

ngIf 是一个选项。我想你也可以使用 ngCloak:

The ngCloak directive is used to prevent the Angular html template from being briefly displayed by the browser in its raw (uncompiled) form while your application is loading.