为了账号安全,请及时绑定邮箱和手机立即绑定

AngularJS-如何获取ngRepeat过滤结果参考

AngularJS-如何获取ngRepeat过滤结果参考

鸿蒙传说 2019-12-09 15:24:07
我正在使用带有过滤器的ng-repeat指令,如下所示:ng-repeat="item in items | orderBy:'order_prop' | filter:query | limitTo:4"我可以看到渲染结果很好;现在我想在控制器上对该结果运行一些逻辑。问题是如何获取结果项引用?更新:只是为了澄清一下:我正在尝试创建自动完成功能,我输入以下内容:<input id="queryInput" ng-model="query" type="text" size="30" placeholder="Enter query">然后过滤的结果:<ul>   <li  ng-repeat="item in items | orderBy:'order_prop' | filter:query | limitTo:4">{{item.name}}</li></ul>现在,我想浏览结果并选择其中一项。
查看完整描述

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是可访问的。


查看完整回答
反对 回复 2019-12-09
?
GCT1015

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。


查看完整回答
反对 回复 2019-12-09
  • 3 回答
  • 0 关注
  • 627 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信