AngularJS过滤器保护了一些特殊的字符。通过在字符串前加!
前缀可以否定谓词,但现在我想过滤掉包含'!'的项目。特别的。我怎么能逃脱这个特殊的角色'!'请?
答案 0 :(得分:3)
你无法逃避它,因为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);
}
}]);
}]);