IT TIP

배열에 다음이 포함 된 경우 각도 표현식

itqueen 2020. 12. 3. 21:32
반응형

배열에 다음이 포함 된 경우 각도 표현식


jobSet식을 사용하여 승인을 위해 선택되지 않은 경우 요소에 클래스를 추가하려고합니다 .

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

이것은 정확히 바보 증명 방법이 아닙니다. 어떻게해야하는지에 대한 제안이 있습니까?


약간 다른 구문으로이를 수행 할 수 있습니다.

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

Plnkr


복잡한 논리로 템플릿을 오버로드하면 안됩니다. 이는 나쁜 습관입니다. 항상 간단하게 유지하십시오!

더 나은 접근 방식은이 논리를 다음에서 재사용 가능한 함수로 추출하는 것입니다 $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

반응형