:
app.filter(function(){
return function(array, param1, param2){
return .... // filter logic
})
});
당신은 HTML
<li ng-repeat="allTags|myFilter:post.tagIds :scopeProp1: scopeProp2">
참고 문헌 인수를 표시하기 위해 :
를 사용합니다. (완전한 데모에 대한 plunkr 참조)
HTML :
<ul ng-repeat="post in posts">
{{post.title}}
{{post.body}}
<li ng-repeat="(key,val) in allTags|tagsFilter:post.tagIds">{{val}}</li>
</ul>
<h4>Improved tags structure</h4>
<ul ng-repeat="post in posts" class="improved-post">
<h4>{{post.title}}</h4>
<p>{{post.body}}</p>
<li class="tag" ng-repeat="tag in allTagsImproved|tagsFilterImproved:post.tagIds">{{tag.tag}}</li>
</ul>
샘플 태그 서비스 :
app.factory("tagsService",function(){
return {
allTagsImproved:[{id:5,tag:'tagfive'}, {id: 1,tag:'one'}, {id:3,tag:'myTag'}, {id: 4,tag: 'cool tag'}, {id:7,tag:'EPIC Tag'}],
allTags : [{5:'tagfive'}, {1:'one'}, {3:'myTag'}, {4:'cool tag'}, {7:'EPIC Tag'}]
}
});
샘플 컨트롤러 : 사용자가 제공 한 데이터 샘플에 대한
app.controller('MainCtrl', function($scope, tagsService) {
$scope.name = 'World';
$scope.data = [{
name:""
},{
name:"ahsan"
},{
name:""
},{
name:"mohsin"
}];
$scope.allTags = tagsService.allTags;
$scope.allTagsImproved = tagsService.allTagsImproved;
$scope.posts = [{
title:'my post',
tagIds:[3,5],
body:' post body'
},{
title:'John\'s post',
tagIds:[1,4,7],
body:'John\'s post body'
}];
});
필터 :
app.filter("tagsFilter",function(){
return function(allTags,tagIds){
console.log(tagIds)
var filteredValues = [];
for(var index in tagIds){
for(var ind in allTags){
if(allTags[ind].hasOwnProperty(tagIds[index].toString())){
filteredValues.push(allTags[ind]);
}
}
}
return filteredValues;
}
});
샘플로 공유 한 json은 동적 키를 사용하여 값을 표시하는 것보다 ng-repeat에 대한 제한이 있습니다 (누군가 내가 확실한 방법을 찾을 수 있음)하지만 실제로 json을 더 나은 구조로 개선 할 것입니다. plunkr에서 사용 된 것처럼. 희망이 도움이됩니다.
당신은 조금 더 설명 할 수 있습니까? 나는 당신의 요점을 얻지 못했습니다. –
json 예제를 추가했는데, 필자는 단지 필터를 배열에 전달해야합니다. 이 배열은 각 객체의 속성입니다. – Serge