10

我正在关注本教程并相应地创建了下面的自定义过滤器。然而,最后一个导致第一个消失;当您使用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

4 回答 4

18
angular.module('filters', []).filter("truncate", function() {})
                             .filter("escape", function() {});
于 2013-10-01T04:25:16.013 回答
4

第二个应该使用声明

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

句法。

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

于 2013-10-01T04:25:09.673 回答
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) {
    ...
  };
});  
于 2014-10-17T18:56:12.920 回答
0
angular.module('filters')
  .filter({
    groupBy: ['$parse', groupByFilter],
    countBy: [countByFilter]
  });

//function to handle the filter
function groupByFilter($parse) {
  return function(input) {
    ...
  }
}
于 2014-09-11T08:25:45.330 回答