角度 JS 全局过滤器模块

angularJS global filter module

本文关键字:模块 过滤器 全局 JS 角度      更新时间:2023-09-26

我在使自定义过滤器工作时遇到问题。

我有一个全局过滤器模块:

angular.module('globalFilters', []).filter('dateRange', function () {
    return function(item) {
        console.log(item);
        return true;
    }
}); 

这在创建时注入到我的应用程序中。我正在尝试将其应用于 ng 重复:

tr.pointer(ng-repeat="asset in completed | dateRange", ng-animate="'animate'", ng-click="selectAsset(asset);")
    td {{asset.Name}}

但是,添加此筛选器将过滤表外的所有assets。为了尝试隔离问题,我返回 true 以使函数显示所有assets但它不起作用。

item登录到控制台时,结果似乎是所有assets的数组,所以我想出了点问题。

我正在按照本教程 https://docs.angularjs.org/tutorial/step_09

谢谢!

您正在过滤数组...所以你的过滤器函数需要返回一个数组。

.filter('dateRange', function () {
    return function(itemArray) {
        if(!itemArray){
            return null
        }else{
             return itemArray.filter(function(item){
                 // conditions of filter
             });
        }            
    }
});

定义自定义筛选器函数时,传递到筛选器的值将替换为从筛选器返回的值,因此item替换为 true

对于记录输入而不更改输入的过滤器,只需返回输入:

return function(item) {
    console.log(item);
    return item;
}