Ответ 1
angular.module('filters', []).filter("truncate", function() {})
.filter("escape", function() {});
Я следую этому учебнику и соответственно создал соответствующие пользовательские фильтры. Последнее, однако, заставляет первый исчезнуть; когда вы используете фильтр 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);
};
});
angular.module('filters', []).filter("truncate", function() {})
.filter("escape", function() {});
Второй должен быть объявлен с использованием
angular.module('filters').filter(....)
синтаксис.
Используемый вами синтаксис каждый раз создает новый модуль.
Один из способов отделить фильтры от отдельных файлов - создать модуль фильтрации, для которого необходимы фильтры по отдельности:
// 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) {
...
};
});
angular.module('filters')
.filter({
groupBy: ['$parse', groupByFilter],
countBy: [countByFilter]
});
//function to handle the filter
function groupByFilter($parse) {
return function(input) {
...
}
}