如何在angularjs中从控制器访问我的过滤数组?

时间:2015-08-05 07:02:35

标签: angularjs filter controller

我在视图中有这个表达式:

<div ng-repeat="friend in (filtered = (friendsData | matchnames:search.pattern)) | myLimitTo : 9 : pageIndex * 9"" >

我做了过滤,所以我可以显示这样的东西

{{filtered.length}} 

在视图中效果很好,但是如何在控制器中访问此参数,以便我用它做什么呢?

1 个答案:

答案 0 :(得分:4)

您无法访问$scope.filtered,因为ng-repeat会创建新范围并为其设置filtered

从技术上讲,您可以在控制器中创建$scope.viewData = {}并在模板中使用以下代码:

<div ng-repeat="friend in (viewData.filtered = (friendsData | matchnames:search.pattern)) | myLimitTo : 9 : pageIndex * 9"" >

还有一些其他可能的方法可以执行类似的操作:例如,如果您使用controllerAs,则可以将过滤后的数组设置为它。

但总的来说,所有这些技巧都不是很好的练习,因为你想隐式地将变量传递给控制器​​,你的角度表达看起来很复杂。