在AngularJS中使用对象的startWith过滤器

时间:2016-03-08 13:57:59

标签: javascript angularjs

我正在尝试使用startWith过滤器,但它没有正确过滤数据,例如P。让我知道我在这里做错了什么。

控制器代码 -

var app = angular.module('filterSample',[]); app.controller('filterCtrl',function($ scope){

$scope.data = {
    messages: [
        {       
        "id":"111619EEVz",
        "name":"Tom 67",
        "status":"Pending"
        },
        {
            "id":"115419EEAA",
            "name":"Business 34",
            "status":"Pending"
        },
        {   
            "id":"1B167000WW",
            "name":"Jack 78",
            "status":"Active",
        }
    ]
  }

  $scope.startsWith = function (actual, expected) {
    var lowerStr = (actual + "").toLowerCase();
    return lowerStr.indexOf(expected.toLowerCase()) === 0;
  }
});

HTML -

<div ng-controller="filterCtrl">
      <input type="text" ng-model="search" />
        <ul border="1px" ng-repeat="msg in data.messages | filter:search:startsWith">
          <li>{{msg.name}}</li>
        </ul>
    </div>

工作Plnkr - http://plnkr.co/edit/tByYZ3jpEk7YPpJnMY11?p=preview

编辑1 -

过滤应该只应搜索name属性,而不是搜索整个对象。

1 个答案:

答案 0 :(得分:2)

将ng-model更改为search.name

<div ng-controller="filterCtrl">
  <input type="text" ng-model="search.name" />
    <ul border="1px" ng-repeat="msg in data.messages | filter:search:startsWith">
      <li>{{msg.name}}</li>
    </ul>
</div>