自1.3.0-beta.10版本以来,AngularJS有一个新功能:"懒惰的一次性绑定".
简单的表达式可以作为前缀::,告诉角度在首次评估表达式后停止观看.给出的常见示例如下:
<div>{{::user.name}}</div>
Run Code Online (Sandbox Code Playgroud)
是否有类似以下表达式的语法?
<div ng-if="user.isSomething && user.isSomethingElse"></div>
<div ng-class="{classNameFoo: user.isSomething}"></div>
Run Code Online (Sandbox Code Playgroud) 我正在使用Ionic,并希望根据数据动态更改每个项目的背景颜色<ion-list>.我以为我会通过函数调用来返回正确的类
<ion-list>
<ion-item ng-repeat="singleCase in allCases" ng-class="getBackgroundColour(singleCase)" class="item-avatar">
<h2>{{singleCase.date}}</h2>
<p>{{singleCase.caseType}}</p>
</ion-item>
</ion-list>
Run Code Online (Sandbox Code Playgroud)
这是目前的控制器
.controller('AllCasesCtrl', ['$scope', '$log', 'dummyData', function($scope, $log, dummyData) {
$scope.allCases = dummyData.cases;
$scope.getBackgroundColour = function(singleCase){
$log.log("getBackgroundColour called...singleCase type: " + singleCase.speciality);
var colourMap = {
speciality1: "speciality1Class",
speciality2: "speciality2Class",
speciality3: "speciality3Class"
};
return colourMap[singleCase.speciality];
};
}])
Run Code Online (Sandbox Code Playgroud)
在检查控制台时,列表中的getBackgroundColour()每个函数被调用7次<ion-item>.为什么这样,我应该避免使用函数调用ng-class吗?