반응형
배열에 다음이 포함된 경우 각도 표현식
이 경우 요소에 클래스를 추가하려고 합니다.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
반응형
'programing' 카테고리의 다른 글
TypeScript 프로젝트에서 기존 C# 클래스 정의를 재사용하는 방법 (0) | 2023.04.03 |
---|---|
React.js: contentEditable의 onChange 이벤트 (0) | 2023.04.03 |
저장된 텍스트 영역에서 반응 표시 줄 바꿈 (0) | 2023.04.03 |
Visual Studio 코드 자동 가져오기 (0) | 2023.04.03 |
Angular.js : 템플릿에서 ng-href를 사용하는 방법 (0) | 2023.04.03 |