如何在Angularjs中的单个模块中创建多个自定义筛选器

时间:2013-10-01 04:19:12

标签: angularjs

我正在关注this tutorial并相应地创建了底层自定义过滤器。然而,最后一个导致第一个消失;当您使用truncate过滤器时,它会出现异常。如何在模块中创建多个过滤器?

angular.module('filters', []).filter('truncate', function () {
    return function (text, length, end) {
        if (isNaN(length))
            length = 10;

        if (end === undefined)
            end = "...";

        if (text.length <= length || text.length - end.length <= length) {
            return text;
        }
        else {
            return String(text).substring(0, length-end.length) + end;
        }

    };
});


angular.module('filters', []).filter('escape', function () {
    return function(text) {
      encodeURIComponent(text);  
    };
});

4 个答案:

答案 0 :(得分:18)

angular.module('filters', []).filter("truncate", function() {})
                             .filter("escape", function() {});

答案 1 :(得分:4)

第二个应该使用

声明
angular.module('filters').filter(....)

语法。

您使用的语法每次都会创建一个新模块。

答案 2 :(得分:1)

将过滤器分成单个文件的一种方法是创建一个单独需要过滤器的过滤器模块:

// init.js
angular.module('application', ['application.filters'])  

// filters.js    
angular.module('application.filters', [
               'filters.currencyCents',
               'filters.percentage',
               ]);  


// percentage.js        
angular.module('filters.percentage', []).filter('percentage', function() {
  return function(decimal, sigFigs) {
    ...
  };
});  

答案 3 :(得分:0)

angular.module('filters')
  .filter({
    groupBy: ['$parse', groupByFilter],
    countBy: [countByFilter]
  });

//function to handle the filter
function groupByFilter($parse) {
  return function(input) {
    ...
  }
}