装饰过滤器
装饰过滤器时,name 参数必须包含 Filter
后缀(区分大小写)。如果过滤器被称为 repeat
,则 decorator 参数为 repeatFilter
。下面我们将装饰自定义过滤器,重复任何给定的字符串 n 次,以便反转结果。你也可以用同样的方式装饰 angular 的内置过滤器,虽然不推荐,因为它会影响框架的功能。
<body>
<div ng-bind="'i can haz cheeseburger ' | repeat:2"></div>
</body>
angular.module('app', [])
.config(function($provide) {
$provide.decorator('repeatFilter', function($delegate) {
return function reverse(input, count) {
// reverse repeated string
return ($delegate(input, count)).split('').reverse().join('');
};
});
})
.filter('repeat', function() {
return function(input, count) {
// repeat string n times
return (input || '').repeat(count || 1);
};
});