61

jobSet如果尚未使用表达式选择a 以供批准,我正在尝试向元素添加一个类。

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

这并不是一个万无一失的方法。关于我应该如何做到这一点的任何建议?

4

3 回答 3

117

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

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

PLNKR

于 2013-06-17T14:39:00.793 回答
16

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

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

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

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

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

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

于 2016-03-07T18:33:27.063 回答
0

在您初始化的某个地方放置此代码。

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>
于 2016-11-09T10:47:23.040 回答