Angular.JS ng-repeat与嵌套的json数组

时间:2013-09-19 02:45:24

标签: javascript angularjs angularjs-ng-repeat

我有一个使用$ resource的People服务,我从PeopleCtrl使用People.query()调用来从json api获取用户列表。数据回复如下:

[
  {
    "usr_id" : "1"
    "first_name" : "lucky"
    "awesome" : "true"
  },
  {
    "usr_id" : "6"
    "first_name" : "Adolf"
    "awesome" : "false"
  }
]

在我的html中,我想使用ng-repeat,并使用该数据进行过滤。我的想法是我有一个用户列表,我想从输入字段中过滤它们。我可以得到基本的工作,但只要输入'k',它就会显示所有结果,而不是只显示字母'k'的结果。这就是我所拥有的:

  <div id="section-body" ng-controller="PeopleSearchCtrl">

    <input type="text" ng-model="search.first_name" placeholder="Search Your Name">

    <center>
      <table ng-show="(filteredData = (People | filter:search)) && search.first_name && search.first_name.length >= 1">
        <tr ng-repeat="per in filteredData" ng-click="search.first_name = per.first_name + ' ' + per.last_name">
          <td>{{per.per_id}}</td>
          <td>{{per.first_name + " " + per.last_name}}</td>
        </tr>
      </table>
    </center>
    <button class="btn btn-large btn-primary" type="button">Submit</button>

  </div>

但是一旦我尝试输入输入,它就会显示所有用户。键入第二个字母,不更改,键入第三个字母,仅显示匹配的记录。删除字符,直到只剩下'k',没有记录显示。所以我想知道我做错了怎么回事。 'People'变量被分配给范围,并且是用户的结果数据数组。

1 个答案:

答案 0 :(得分:4)

这是它的工作原理。一旦弄明白,这很容易。

<input ng-model="query">

<table id="productList" ng-show="(products|filter:query).length">
  <tr ng-repeat="product in products|filter:{username:query}">
...