如何过滤angularjs中的数据?

时间:2015-01-27 06:59:37

标签: angularjs angularjs-scope angularjs-ng-repeat angular-filters

我正在尝试根据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

1 个答案:

答案 0 :(得分:0)

过滤无效的原因是filter仅适用于数组,而acct_list不是数组。

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

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

或者,在控制器中排列一个数组,然后安排ng-repeat

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

另外,请勿忘记将ng-model="searchText.title"添加到<select>并相应填写<option>值。