【问题标题】:angularJS global filter moduleangularJS 全局过滤器模块
【发布时间】:2016-01-23 01:00:08
【问题描述】:

我无法让我的自定义过滤器正常工作。

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

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

这是在创建时注入我的应用程序的。 我正在尝试将此应用于 ng-repeat:

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

谢谢!

【问题讨论】:

  • 我正在使用玉模板,渲染为: {{asset.Name}}

标签: javascript angularjs angularjs-filter angularjs-module


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    当您定义自定义过滤器函数时,传入过滤器的值被过滤器返回的值替换,因此您将 item 替换为 true

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-20
      • 2019-06-11
      • 1970-01-01
      • 2017-05-30
      • 2012-05-28
      • 1970-01-01
      • 2019-08-09
      • 1970-01-01
      相关资源
      最近更新 更多