【问题标题】:How to filter the data in angularjs?如何过滤angularjs中的数据?
【发布时间】:2015-01-27 16:24:39
【问题描述】:

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

【问题讨论】:

  • 我们必须查看所有样式和标记才能完全理解您的问题吗?您希望这里的人们帮助您 - 通过清理您发布的代码的不相关部分来帮助我们。阅读本文了解更多详情:stackoverflow.com/help/mcve
  • 能解决的可以看plnkr
  • 我已从您的问题中删除了不相关的部分,以便人们更轻松地帮助您。请在下次发布问题时投入时间。
  • 好的,感谢编辑

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


【解决方案1】:

过滤不起作用的原因是因为filter 仅适用于数组,而您的acct_list 不是数组。

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

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

或者,在控制器中排列成一个数组,然后在上面设置ng-repeat

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

另外,不要忘记将ng-model="searchText.title" 添加到您的&lt;select&gt; 并相应地填写&lt;option&gt; 值。

【讨论】:

  • 非常感谢新开发者。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
相关资源
最近更新 更多