在实现angular js自定义过滤器功能时丢失了一些行为

时间:2013-11-27 16:06:23

标签: angularjs

因为我只需要从数组中过滤掉一些特定的键(firstName或lastName),我必须实现一个自定义过滤器(如果我错了,请纠正我)。

所以我在相应的控制器中实现了一个函数(一旦我开始工作,可能会创建一个特定的过滤器)。 这是功能:

 $scope.mama = function (baba) {
            return baba.firstName == $scope.query || baba.lastName == $scope.query;

        };

这是模板:

Search: <input ng-model="query">

<div ng-controller="ListProscontroller" ng-init="listpros()">
    <ul>
        <li ng-repeat="item in prosItems.results | filter:mama"> {{item.firstName}} </li>
    </ul>
</div>

这样做确实只按预期在firstName或lastName中搜索。但我放弃了几个好处:

  • 变得区分大小写
  • 它只匹配完全匹配:如果名字是“Bob”,则当释放按键“o”时“Bo”将不匹配。但它当然会匹配“鲍勃”为“鲍勃”。 如何修改此函数以保留默认的过滤器行为?

1 个答案:

答案 0 :(得分:0)

文字匹配很棘手。 未考虑重音字符的解决方案(但不区分大小写的匹配和子字符串匹配)将是:

$scope.mama = function (baba) {
    var firstName = baba.firstName.toUpperCase(),
        lastName = baba.lastName.toUpperCase(),
        query = $scope.query.toUpperCase();
    return firstName.indexOf(query) >= 0 || lastName.indexOf(query) >= 0;
}