반응형
AngularJS - ng-repeat으로 커스텀필터를 구조화하여 아이템을 조건부로 반환하는 방법
목록 항목을 출력하는 ng-repeat이 있습니다.조건이 참일 경우에만 목록 항목이 인쇄되도록 사용자 지정 필터를 작성하려고 합니다.
필터에 변수가 전달되지 않는 것 같아서 구조가 잘못된 것 같습니다.
index.displaces를 표시합니다.
<div ng-show="userDetails.username" class="nav">
<p>Menu</p>
<li ng-repeat="menuItem in menu | matchAccessLevel:$rootScope.userDetails.accessLevel:menuItem.minAccess | orderBy:'position' ">
<a ng-href="/angular-app/app/{{menuItem.id}}">{{menuItem.name}}</a>
</li>
</div>
app.module
userApp.filter('matchAccessLevel', function() {
return function( item, userAccessLevel, minAccessLevel ) {
if( userAccessLevel >= minAccessLevel ) {
return item;
}
}
});
필터는 어레이 내의 개별 항목에서는 작동하지 않습니다.전체 어레이를 다른 어레이로 변환합니다.
userApp.filter('matchAccessLevel', function() {
return function( items, userAccessLevel) {
var filtered = [];
angular.forEach(items, function(item) {
if(userAccessLevel >= item.minAccess) {
filtered.push(item);
}
});
return filtered;
};
});
이 plnkr 참조
**항상 함수에 대한 인수를 검사합니다.그 가치가 항상 명확하지는 않다.*
필터 가이드 참조
Array.filter를 사용하면 보다 간결한 솔루션을 얻을 수 있습니다.
app.filter('matchAccessLevel', function() {
return function( items, userAccessLevel ) {
return items.filter(function(element){
return userAccessLevel >= element.minAccess;
});
}
});
CoffeeScript 애호가용:
userApp.filter 'matchAccessLevel', ->
(items, userAccessLevel) ->
item for item in items when userAccessLevel >= item.minAccess
언급URL : https://stackoverflow.com/questions/15196161/angularjs-how-to-structure-a-custom-filter-with-ng-repeat-to-return-items-cond
반응형
'source' 카테고리의 다른 글
재스민 유닛 테스트에서 $q. 모든 약속을 어떻게 해결합니까? (0) | 2023.04.02 |
---|---|
치명적 오류: 의 '루프' 또는 '스위치' 컨텍스트에 '브레이크'가 없습니다. (0) | 2023.04.02 |
리액트 및 웹 팩을 사용하여 Favicon 추가 (0) | 2023.04.02 |
HTTP 요구가 상태 코드0을 반환하는 것은 무엇을 의미합니까? (0) | 2023.04.02 |
Jest를 사용한 새로운 리액트라우터 후크를 사용한history.push의 모의 방법 (0) | 2023.04.02 |