数组包含的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>