数组包含的angular度expression式

我试图添加一个类到一个元素,如果一个jobSet尚未被选中使用expression式批准。

 <li class="approvalUnit" ng-repeat="jobSet in dashboard.currentWork" ng-class="{-1:'approved'}[selectedForApproval.indexOf(jobSet)]"> 

这不完全是一个愚蠢的certificate方法。 任何build议,我应该如何做到这一点?

你可以用稍微不同的语法完成这个工作:

 ng-class="{'approved': selectedForApproval.indexOf(jobSet) === -1}" 

Plnkr

你不应该用复杂的逻辑重载模板,这是一个不好的做法。 记得始终保持简单!

更好的方法是将这个逻辑提取到$rootScope可重用函数中:

 .run(function ($rootScope) { $rootScope.inArray = function (item, array) { return (-1 !== array.indexOf(item)); }; }) 

然后,在你的模板中使用它:

 <li ng-class="{approved: inArray(jobSet, selectedForApproval)}"></li> 

我想每个人都会同意这个例子更具可读性和可维护性。

在初始化的某个地方放这个代码。

 Array.prototype.contains = function contains(obj) { for (var i = 0; i < this.length; i++) { if (this[i] === obj) { return true; } } return false; }; 

那么,你可以这样使用它:

 <li ng-class="{approved: selectedForApproval.contains(jobSet)}"></li>