将控制器方法定义为自定义筛选器在AngularJs中不起作用

将控制器方法定义为自定义筛选器在AngularJs中不起作用,angularjs,filter,ionic,Angularjs,Filter,Ionic,我正在尝试使用AngularJs中与Ionic捆绑的控制器方法实现一个自定义过滤器 <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-che

我正在尝试使用AngularJs中与Ionic捆绑的控制器方法实现一个自定义过滤器

<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>
我确信我的设置,因为我可以在filterDocuments方法中设置一个断点并看到它运行。但是列表总是空的,从来没有列出过任何东西


我使用的是爱奥尼亚1.0.0-beta.14版中捆绑的AngularJS 1.3.6版。

您必须为模块注册过滤功能,如下所示:

angular.module('yourModule', []).filter('filterDocuments', function() {
    return function(doc) {
        return true;
    };
});

您不能将$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>

这是定义过滤器的正确方法。但我对以下解决方案更感兴趣:
<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>