반응형
배열에 다음이 포함 된 경우 각도 표현식
jobSet
식을 사용하여 승인을 위해 선택되지 않은 경우 요소에 클래스를 추가하려고합니다 .
<li class="approvalUnit" ng-repeat="jobSet in dashboard.currentWork" ng-class="{-1:'approved'}[selectedForApproval.indexOf(jobSet)]">
이것은 정확히 바보 증명 방법이 아닙니다. 어떻게해야하는지에 대한 제안이 있습니까?
약간 다른 구문으로이를 수행 할 수 있습니다.
ng-class="{'approved': selectedForApproval.indexOf(jobSet) === -1}"
복잡한 논리로 템플릿을 오버로드하면 안됩니다. 이는 나쁜 습관입니다. 항상 간단하게 유지하십시오!
더 나은 접근 방식은이 논리를 다음에서 재사용 가능한 함수로 추출하는 것입니다 $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>
참고 URL : https://stackoverflow.com/questions/17149552/angular-expression-if-array-contains
반응형
'IT TIP' 카테고리의 다른 글
'요소'초기화는 '케이스'레이블에서 건너 뜁니다. (0) | 2020.12.03 |
---|---|
명령 줄 도구를 사용하여 파일의 줄 길이 계산 (0) | 2020.12.03 |
HttpClient를 사용하여 데이터를 게시하는 방법은 무엇입니까? (0) | 2020.12.03 |
VectorDrawables srcCompat를 사용하는 Android Selector Drawable (0) | 2020.12.03 |
거친 그레이 스케일 알고리즘 사용에 문제가 있습니까? (0) | 2020.12.03 |