jobSet
式を使用して承認のために選択されていない場合、要素にクラスを追加しようとしています。
<li class="approvalUnit" ng-repeat="jobSet in dashboard.currentWork" ng-class="{-1:'approved'}[selectedForApproval.indexOf(jobSet)]">
これは、絶対確実な方法ではありません。これを行う方法について何か提案はありますか?
jobSet
式を使用して承認のために選択されていない場合、要素にクラスを追加しようとしています。
<li class="approvalUnit" ng-repeat="jobSet in dashboard.currentWork" ng-class="{-1:'approved'}[selectedForApproval.indexOf(jobSet)]">
これは、絶対確実な方法ではありません。これを行う方法について何か提案はありますか?
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.
初期化のどこかにこのコードを入れてください。
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>