角度js中区分大小写的过滤器,不使用用户定义的过滤器

时间:2014-07-08 10:25:06

标签: javascript jquery angularjs

任何人都可以告诉我如何在不使用angularjs中的用户定义过滤器的情况下执行区分大小写的过滤器,请参阅此处我想打印除john之外的所有名称,但是当我放置filter:{item: '!john'}时它会删除johnjohnmathew以及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

1 个答案:

答案 0 :(得分:5)

如果您使用的是较新版本的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