Как создать несколько настраиваемых фильтров в одном модуле в Angularjs

Я следую этому учебнику и соответственно создал соответствующие пользовательские фильтры. Последнее, однако, заставляет первый исчезнуть; когда вы используете фильтр 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);  
    };
});

Ответ 1

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

Ответ 2

Второй должен быть объявлен с использованием

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

синтаксис.

Используемый вами синтаксис каждый раз создает новый модуль.

Ответ 3

Один из способов отделить фильтры от отдельных файлов - создать модуль фильтрации, для которого необходимы фильтры по отдельности:

// 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) {
    ...
  };
});  

Ответ 4

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

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