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

时间:2015-01-07 18:37:12

标签: angularjs filter ionic

我尝试使用与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。

2 个答案:

答案 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>