반응형
부울에서의 ng-filter 필터
ng-repeat의 부울값을 필터링하려고 합니다.
등록되지 않은 사용자 목록:
<h3>Unregistered Users</h3>
<div ng-repeat="user in users | filter:!user.registered">
<div class="row-fluid">
<div class="span2">
{{user.name}}
</div>
</div>
</div>
등록된 사용자 목록:
<h3>Registered Users</h3>
<div ng-repeat="user in users | filter:user.registered">
<div class="row-fluid">
<div class="span2">
{{user.name}}
</div>
</div>
</div>
등록 및 !registered를 기준으로 필터링하는 좋은 방법이 있습니까?
obj 식에 의한 필터:
<h3>Unregistered Users</h3>
<div ng-repeat="user in users | filter:{registered:false}">
<div class="row-fluid">
<div class="span2">
{{user.name}}
</div>
</div>
</div>
JSFiddle:http://jsfiddle.net/alfrescian/9ytDN/
필요한 논리에 따라 true 또는 false를 반환하는 메서드를 컨트롤러에 만들고 필터에 해당 함수를 지정합니다.
다음과 같은 경우:
$scope.isRegistered = function(item) {
return item.registered;
};
<h3>Unregistered Users</h3>
<div ng-repeat="user in users | filter:!isRegistered ">
<div class="row-fluid">
<div class="span2">
{{user.name}}
</div>
</div>
</div>
항목에 부울 속성이 설정되어 있지 않은 경우 따옴표.x. filter: {property:'!'+true}와 함께 '!'를 사용하여 true로 설정되지 않은 속성을 가진 항목을 찾을 수 있습니다.
예:
$scope.users = [
{
name : 'user1 (registered)',
registered : true
},
{
name : 'user2 (unregistered)'
},
{
name : 'user3 (registered)',
registered : true
},
{
name : 'user4 (unregistered)'
}
등록되지 않은 사용자 필터를 가져오려면:
<h3>Unregistered Users</h3>
<div ng-repeat="user in users | filter:{registered:'!'+true}">
<div class="row-fluid">
<div class="span2">
{{user.name}}
</div>
</div>
</div>
나도 같은 질문을 했어.Angular 1.1.5에서는 Alfrescian 솔루션이 작동하지 않았습니다.
다음 바이올린을 찾았습니다.http://jsfiddle.net/buehler/HCjrQ/
.filter('onlyBooleanValueFilter', [function(){
return function(input, param){
var ret = [];
if(!angular.isDefined(param)) param = true;
angular.forEach(input, function(v){
// 'active' is a hard-coded field name
if(angular.isDefined(v.active) && v.active === param){
ret.push(v);
}
});
return ret;
};
}])
필드에 따라 필터 코드를 조정해야 합니다.
Websirnik의 답변을 약간 수정하면 데이터 세트에 대한 모든 열 이름을 사용할 수 있습니다.
.filter('onlyBooleanValueFilter', [function () {
return function (input, column, trueOrFalse) {
var ret = [];
if (!angular.isDefined(trueOrFalse)) {
trueOrFalse = false;
}
angular.forEach(input, function (v) {
if (angular.isDefined(v[column]) && v[column] === trueOrFalse) {
ret.push(v);
}
});
return ret;
};
}])
마크업:
<div repeat="row in your.dataset | onlyBooleanValueFilter: 'yourColumn' : true">
...your stuff here....
</div>
언급URL : https://stackoverflow.com/questions/17655837/ng-repeat-filter-on-boolean
반응형
'itsource' 카테고리의 다른 글
몽고이드 아니면 몽고매퍼? (0) | 2023.04.02 |
---|---|
PHP: 키를 어떻게 사용하고 유지합니까? (0) | 2023.03.28 |
클래스 메서드에서 'this'가 사용되어야 합니다. (0) | 2023.03.28 |
왜 '약속'일까?console.log가 아닌 React 컴포넌트에서 두 번 호출된 경우 (0) | 2023.03.28 |
is 키워드는 타이프스크립트에서 어떤 역할을 합니까? (0) | 2023.03.28 |