61

jobSet式を使用して承認のために選択されていない場合、要素にクラスを追加しようとしています。

<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}"

プランク

于 2013-06-17T14:39:00.793 に答える
16

You shouldn't overload the templates with complex logic, it's a bad practice. Remember to always keep it simple!

The better approach would be to extract this logic into reusable function on your $rootScope:

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

Then, use it in your template:

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

I think everyone will agree that this example is much more readable and maintainable.

于 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 に答える