AngularJS - 过滤数据时更新.length

时间:2014-07-08 12:57:31

标签: angularjs angularjs-directive angularjs-scope angularjs-ng-repeat

我有一个简单的ng-repeat显示一大块数据。

用户可以通过在文本框中键入值来过滤数据。

在页面加载时,我正在为$ scope中的总项目执行.length。我想要尝试做的是当用户在文本框中输入值时,要将此.length更新为找到的结果数量:

HTML:

<p>Original Results found: {{ items.length }}</p>

<p>Updated Results found: {{ i.length }}</p>

<br>

<div>
  <ul>
    <li ng-repeat="i in items | filter: searchText | limitTo: limit">{{ i.Title }}</li>
  </ul>
</div>

<br>


<input ng-model="searchText">
<button ng-click="performSearch(searchText)">Submit</button>

这是我的傻瓜:http://plnkr.co/edit/B0gHuI3z8XUsTidXrl4V?p=preview

3 个答案:

答案 0 :(得分:6)

您可以将过滤后的数组存储在临时数组中

<p>Original Results found: {{ items.length }}</p>

<p>Updated Results found: {{ filteredArray.length }}</p>

<br>

<div>
  <ul>
    <li ng-repeat="i in filteredArray = (items | filter: searchText) | limitTo: limit">              {{ i.Title }}</li>
  </ul>
</div>

<br>


<input ng-model="searchText">
<button ng-click="performSearch(searchText)">Submit</button>

工作人员:

http://plnkr.co/edit/c5Rg8v45Z6TYV19Ss0Fx?p=preview

答案 1 :(得分:3)

从angular 1.3.0开始,任何过滤器的结果都可以发布回范围..用&#39; as&#39;选项

<p>Original Results found: {{ items.length }}</p>

<p>Updated Results found: {{ results.length }}</p>

<br>

<div>
  <ul>
    <li ng-repeat="i in items | filter: searchText as results">{{ i.Title }}</li>
</ul>
</div>

答案 2 :(得分:2)

您可以创建一个输出数组长度的过滤器,如下所示:

app.filter('arrayLength', function() {
  return function (input) {
    return input.length;
  };
});

然后像这样使用它来呈现项目数量:

{{ items | filter : searchText | arrayLength }}

工作人员:

http://plnkr.co/edit/N5IWaJXdsMOfzIzlksiC?p=preview