:
app.filter(function(){
return function(array, param1, param2){
return .... // filter logic
})
});
は、HTML
<li ng-repeat="allTags|myFilter:post.tagIds :scopeProp1: scopeProp2">
文献で引数を表すために:
を使用しています。あなたが提供されたデータサンプルのため
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'
}];
});
フィルタ:
<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'}]
}
});
サンプルコントローラ
HTML(完全なデモのplunkrを参照してください):
サンプルとして共有しているjsonは、ダイナミックキーを使用して値を表示する(誰かが私が確信している方法を見つけることができる)の上にng-repeatを超える制限がありましたが、実際にはjsonをより良い構造プランナーで使用されています。それが役に立てば幸い。
あなたはもう少し説明できますか?私はあなたのポイントを得ていません –
私はjsonの例を追加しました、私はちょうどフィルタに配列を渡す必要があります。この配列は、角度オブジェクトのプロパティです。 – Serge