我有州列表,我已经添加了州名搜索过滤器。 我有这样的数组:
stateList : [{name: 'abc', area:500},{name: '!def', area:500}]
我有 <li>
与 ng-repeat="state in stateList | filter:{name:searchText}"
使用 ng-model="searchText"
搜索文本框
搜索在正常情况下工作,但当我搜索时!(感叹号)。它没有给出任何结果。它应该给出名称为“!def”的状态
最佳答案
问题是 !
token 被 AngularJS 识别为 “否定谓词”。不过,您可以像这样创建自定义 myFilter
:
angular.module('app', []).controller('ctrl', function($scope) {
$scope.stateList = [{
name: 'abc',
area: 500
}, {
name: '!def',
area: 500
}]
}).filter('myFilter', function() {
return function(input, filter) {
if (!filter.name)
return input;
return input.filter(function(x) {
return x.name.indexOf(filter.name) != -1;
});
}
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app='app' ng-controller='ctrl'>
<input type='text' ng-model='searchText' />
<ul>
<li ng-repeat='state in stateList | myFilter : {name:searchText}'>{{state | json}}</li>
</ul>
</div>
关于javascript - Angularjs:名称以 ! 开头时搜索过滤器不起作用(感叹号),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47587719/