任何人都可以告诉我如何在不使用angularjs中使用用户定义的过滤器的情况下进行区分大小写的过滤器,请参阅此处我要打印除john
之外的所有名称,但是当我将filter:{item: '!john'}
放入时,它会删除john
,johnmathew
和johnny
,但是我需要仅john
被删除。
html
<div ng-app='myApp' ng-controller="Controller">
<div ng-repeat="val in items | filter:{item: '!john'}">{{val.item}}</div>
</div>
脚本
var app = angular.module('myApp', []);
app.controller('Controller', function ($scope) {
$scope.items = [{
item: 'john'
}, {
item: 'sunny'
}, {
item: 'johnmathew'
}, {
item: 'lenu'
}, {
item: 'binu'
}, {
item: 'johnny'
}];
});
JSFiddle
最佳答案
如果您使用的AngularJS版本比您的小提琴小,您可以添加:true
以实现完全匹配。
<div ng-repeat="val in items | filter:{item: '!john'}:true">{{val.item}}</div>
Fiddle
如果您不使用较新的版本,则必须创建自己的过滤器来进行检查。
HTML
<div ng-repeat="val in items | objFilter:'item':'john'">{{val.item}}</div>
JS
app.filter('objFilter', function() {
return function(input, prop, value) {
var retValue = [];
input.forEach(function(item) {
if(item[prop] && item[prop] !== value) {
retValue.push(item);
}
});
return retValue;
};
});
Custom filter fiddle