【发布时间】:2015-08-12 02:17:56
【问题描述】:
AngularJS 过滤器保护了一些特殊字符。可以通过在字符串前面加上! 来否定谓词,但现在我想过滤掉包含“!”的项目特殊字符。我怎样才能逃脱这个特殊的字符'!请问?
【问题讨论】:
AngularJS 过滤器保护了一些特殊字符。可以通过在字符串前面加上! 来否定谓词,但现在我想过滤掉包含“!”的项目特殊字符。我怎样才能逃脱这个特殊的字符'!请问?
【问题讨论】:
你无法逃脱它,因为filter过滤doesn't presume it。
但您可以使用 predicate function 覆盖 ! 谓词的默认行为并装饰 filter 而不会破坏其他任何内容。
app.config(['$provide', function ($provide) {
function bang(value) {
return value.indexOf('!') >= 0;
};
function bangless(value) {
return value.indexOf('!') < 0;
};
$provide.decorator('filterFilter', ['$delegate', function ($delegate) {
return function (array, expression, comparator) {
if (expression === '!') {
expression = bang;
} else if (expression === '!!') {
expression = bangless;
}
return $delegate(array, expression, comparator);
}
}]);
}]);
【讨论】: