代码之家  ›  专栏  ›  技术社区  ›  kravits88 JML

angularJS全局过滤器模块

  •  0
  • kravits88 JML  · 技术社区  · 10 年前

    我很难让我的自定义过滤器工作。

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

    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,以便函数显示所有 资产 但它不起作用。

    登录时 item 对于控制台,结果似乎是所有 资产 所以我想有点不对劲。

    我正在学习这个教程 https://docs.angularjs.org/tutorial/step_09

    谢谢

    2 回复  |  直到 10 年前
        1
  •  2
  •   charlietfl    10 年前

    您正在筛选一个数组…所以您的筛选函数需要返回一个数组。

    .filter('dateRange', function () {
        return function(itemArray) {
            if(!itemArray){
                return null
            }else{
                 return itemArray.filter(function(item){
                     // conditions of filter
                 });
            }            
        }
    });
    
        2
  •  0
  •   mzulch    10 年前

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

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

    return function(item) {
        console.log(item);
    
        return item;
    }
    
    推荐文章