如何过滤angularjs中的数据?

How to filter the data in angularjs?

我正在尝试根据 firstnametitle 属性过滤数据,但它没有过滤。

<label>by Name 
  <input type="text" ng-model="searchText.data.firstname"></label> |

<label>by Title
  <select name="title">
    <option value="">All</option>
    <option value="">Zone Manager</option>
    <option value="">Logistic agent</option>
  </select></label>

<hr/>

<div ng-repeat="accDetails in acct_list | filter:searchText">
   {{accDetails.data.firstname}} |
   {{accDetails.data.lastname}} | 
   {{accDetails.title}}

</div>

JSON数据为:

$scope.acct_list = {
  "0": {
    "data": {
        "firstname": "maeli",
        "lastname": "mad",
        //...
    },
    "title": "Shop"
  },
  "1": {
    "data": {
        //...
    },
    "title": "hotel"
  }
}

这是我的plnkr

过滤不起作用的原因是因为filter只对数组有效,而你的acct_list不是数组。

您可以将数据更改为数组:

$scope.acct_list = [
  {
    "data": {
        "firstname": "maeli",
        "lastname": "mad",
        //...
    },
    "title": "Shop"
  },
  {
    ...
  }
]

或者,在控制器中排列成一个数组,然后ng-repeat覆盖它。

这是关于此主题的另一个相关 SO question

此外,不要忘记将 ng-model="searchText.title" 添加到 <select> 并相应地填写 <option> 值。