我有一个简单的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>
答案 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>
工作人员:
答案 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 }}
工作人员: