我尝试使用与Ionic捆绑在一起的AngularJs中的控制器方法实现自定义过滤器。
<div class="list">
<a class="item item-icon-right" data-ng-repeat="d in filtered_documents = (data.documents | filter:filterDocuments )">
{{ d.name }}
<i class="icon ion-chevron-right icon-accessory"></i>
</a>
</div>
在我的控制器中,我有:
$scope.filterDocuments = function(doc) {
return true;
}
$scope.data.documents = [{name: "doc1"}, {name: "doc2"}];
我确定我的设置,因为我可以在filterDocuments
方法中设置一个断点并看到它运行。但是列表总是空的,没有列出任何内容!
我使用的是Ionic捆绑的AngularJS v1.3.6,v1.0.0-beta.14。
答案 0 :(得分:0)
您必须为模块注册过滤功能,如下所示:
angular.module('yourModule', []).filter('filterDocuments', function() {
return function(doc) {
return true;
};
});
答案 1 :(得分:0)
您不能使用$ scope方法或控制器方法作为过滤器,您需要使用自定义角度过滤器,并使用像这样的sintax定义它(类似于控制器sintax但作为过滤器)
yourApp.filter('filterDocuments', function(){
return function(array) {
//your logic for the array here
return filtered_array //return the array modified by your code
}
})
和模板中的html
<div class="list">
<a class="item item-icon-right" data-ng-repeat="d in data.documents | filterDocuments">
{{ d.name }}
<i class="icon ion-chevron-right icon-accessory"></i>
</a>
</div>