OR 연산자가 있는 AngularJsng급 다중 조건
각 값에 따라 수업을 추가할 때 좋은 구문을 알아보려고 합니다.OR 연산자와 함께 2가지 조건(라이브 사용자 변경 시, 데이터 로딩 시)에 대한 클래스를 활성화하고 싶습니다.
다음 줄입니다.
<a href="" ng-click="addFavorite(myfav.id);favorite=!favorite">
<i class="fa orange" ng-class="{'fa-star': (favorite || (fav==myfav.id)), 'fa-star-o': !favorite}"></i>
</a>
나는 이것과 같은 몇가지 다른 코드를 시도해보았습니다.
ng-class="{'fa-star': favorite, 'fa-star': (fav==myfav.id), 'fa-star-o': !favorite}"
아무 성과도 없이누가 내가 좋은 구문을 찾는 것을 도와줄 수 있습니까?
이거 먹어봐요.
<a href="" ng-click="addFavorite(myfav.id);favorite=!favorite">
<i class="fa orange" ng-class="{'fa-star': favorite || fav==myfav.id, 'fa-star-o': !favorite}"></i>
대괄호는 필요 없습니다.
일단 당신은 뒤에 논리를 추가해야 합니다.ng-class
이를 위해서는 항상 컨트롤러를 사용하는 것을 위해서는 컨트롤러를 사용하는 것이 더 좋습니다.JSON 구문(HTML에 있는 것과 같음) 또는 JavaScript의 두 가지 방법 중 하나를 수행할 수 있습니다.
HTML (JSON) 구문
HTML
<i ng-class="getFavClassIcon(myFav.id)"></i>
JS
$scope.getFavClassIcon= function (favId) {
return {
'fa-star-o' : !$scope.favorite,
'fa-star' : $scope.favorite || $scope.fav === favId
};
};
양호한 구 IF-statement (자바스크립트)
HTML
<i ng-class="getFavClassIcon(myFav.id)"></i>
JS
$scope.getFavClassIcon= function (favId) {
if (!$scope.favorite) {
return 'fa-star-o';
} else if ($scope.favorite) { // obviously you can use OR operator here
return 'fa-star';
} else if ($scope.fav === favId) {
return 'fa-star';
}
};
HTML은 그대로 유지됩니다.
<a href="" ng-click="addFavorite(myfav.id);favorite=!favorite">
<i ng-class="{'fa-star-o':!favorite,'fa-star':favorite||fav===myfav.id}"></i>
</a>
그러나 CSS 파일에 클래스가 있는 순서가 중요할 것입니다.
그fa-star
수업은 다음 시간에 적용될 것입니다.favorite
참이거나fav===myfav.id
true를 반환합니다.
따라서 한 번 클릭한 후 다음과 같이 가정합니다.fav===myfav.id
true를 반환하고 계속 true를 반환합니다. 다시 클릭할 때에도 클래스가 계속해서 true를 반환합니다.fa-star
그때부터 항상 적용될 것입니다.
기본적으로 인 경우favorite
그렇다면 거짓입니다.fa-star-o
템플릿이 처음 로드될 때 적용됩니다. 그러나 첫 번째 클릭 후,favorite
true로 설정되면 제거됩니다.그런 다음 두 번째를 클릭합니다.favorite
다시 false로 설정됩니다.fa-star-o
적용은 되지만 이 경우에는.fa-star
수업 또한 다음과 같이 적용될 것입니다.fa===myfav.id
조건이 여전히 참으로 반환됩니다(이 경우를 가정할 때).
따라서 두 클래스가 요소에 동시에 존재할 때 발생할 수 있으므로 요소에 존재할 때 어떤 클래스를 확실히 적용해야 하는지 우선순위를 정해야 합니다.예를 들어 만약fa-star-o
클래스는 더 높은 우선순위를 취하고, 아래에 그것을 둡니다.fa-star
예를 들어, 당신의 CSS에
.fa-star {
border: 1px solid #F00;
}
.fa-star-o {
border: 1px solid #000;
}
http://plnkr.co/edit/Dh59KUU41uWpIkHIaYrO?p=preview 에서 작업 데모 참조
ng-class와 함께 식을 사용할 수 있습니다.
<i class="fa orange" ng-class="favorite || fav == myfav.id ? 'fav' : 'no-fav'"></i>
예를 들어,제 시나리오에서는 어떤 조건에서는 대문자 클래스를 적용해야 하고 어떤 조건에서는 대문자 클래스를 적용할 필요가 없습니다.
inputTextCapitalSmall(assetId) {
return {
'uppercase': assetId !== 'TELEKURS' && assetId !== 'REUTERS' && assetId !== 'S&P',
};
}
<form [formGroup]="querySearchForm" >
<input autocomplete="off" matInput id="assetIdTypeValue" [ngClass]="inputTextCapitalSmall(querySearchForm.value.assetIdType)" >
</form>
언급URL : https://stackoverflow.com/questions/24287725/angularjs-ng-class-multiple-conditions-with-or-operator
'programing' 카테고리의 다른 글
인사이드 div 클릭을 비활성화하는 방법 (0) | 2023.09.23 |
---|---|
초기 커밋을 어떻게 참조합니까? (0) | 2023.09.18 |
자바스크립트로 업로드 전 이미지 너비 및 높이 확인 (0) | 2023.09.18 |
C - 정수가 할당되었는지 확인 (0) | 2023.09.18 |
양식의 모든 필드를 지우는 jQuery/Javascript 함수 (0) | 2023.09.18 |