programing

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

shortcode 2023. 4. 3. 23:22
반응형

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

이 경우 요소에 클래스를 추가하려고 합니다.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

반응형