3 回答
TA贡献1798条经验 获得超7个赞
这是一个比以前更简单的方法。
<input ng-model="query">
<div ng-repeat="item in (filteredItems = (items | orderBy:'order_prop' | filter:query | limitTo:4))">
{{item}}
</div>
然后$scope.filteredItems是可访问的。
TA贡献1827条经验 获得超4个赞
这是Andy Joslin解决方案的过滤器版本。
更新: BREAKING CHANGE。从1.3.0-beta.19版本开始(此commit),过滤器没有上下文,并且this将绑定到全局范围。您可以将上下文作为参数传递,也可以在ngRepeat 1.3.0-beta.17 +中使用新的别名语法。
// pre 1.3.0-beta.19
yourModule.filter("as", function($parse) {
return function(value, path) {
return $parse(path).assign(this, value);
};
});
// 1.3.0-beta.19+
yourModule.filter("as", function($parse) {
return function(value, context, path) {
return $parse(path).assign(context, value);
};
});
然后在您看来
<!-- pre 1.3.0-beta.19 -->
<input ng-model="query">
<div ng-repeat="item in items | orderBy:'order_prop' | filter:query | limitTo:4 | as:'filteredItems'">
{{item}}
</div>
<!-- 1.3.0-beta.19+ -->
<input ng-model="query">
<div ng-repeat="item in items | orderBy:'order_prop' | filter:query | limitTo:4 | as:this:'filteredItems'">
{{item}}
</div>
<!-- 1.3.0-beta.17+ ngRepeat aliasing -->
<input ng-model="query">
<div ng-repeat="item in items | orderBy:'order_prop' | filter:query | limitTo:4 as filteredItems">
{{item}}
</div>
这使您可以访问$scope.filteredItems。
添加回答
举报