数组包含的角度表达式

Web*_*net 61 angularjs

如果jobSet尚未使用表达式选择批准,我正在尝试向元素添加类.

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

这不是一个简单的方法.关于我应该怎么做的任何建议?

Ste*_*wie 115

您可以使用稍微不同的语法来完成此操作:

ng-class="{'approved': selectedForApproval.indexOf(jobSet) === -1}"
Run Code Online (Sandbox Code Playgroud)

Plnkr


Sla*_* II 15

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

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

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

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

<li ng-class="{approved: inArray(jobSet, selectedForApproval)}"></li>
Run Code Online (Sandbox Code Playgroud)

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