无法在控制器上访问ngRepeat的过滤结果
Can't access filtered results of ngRepeat on controller
我有一个ng-repeat网格,它是这样的:
<tr ng-repeat="item in (filteredResults = (userHours| filter:sortDate | filter:sortYear))">
当我应用过滤器时,它们按预期工作,但是我需要跟踪过滤的结果以获得一定的结果总和,因此我添加:
$scope.$watchGroup(['sortYear','sortDate.data'],function(n,o){
$scope.sumHours = getHoursSum($scope.filteredResults);
$scope.sumHours = toHHMMSS($scope.sumHours);
});
我一直得到$scope。在应用过滤器之前或之后,filteredResults为"undefined"。我需要做些什么来访问范围内过滤的结果?
我测试了它,问题是由于你初始化值的方式:
ng-repeat
是一个指令,你不知道什么时候它会是apply
的角度digest
周期。这意味着当您的第一个$scope.$watch
运行时,ng-repeat
还没有被评估。filteredResults
是undefined
的结果
解决方法非常简单:
- 在控制器的开头添加变量到你的作用域。
.
$scope.filteredResults = [];
您将集合初始化为一个空数组,这将防止您的函数在ng-repeat
分析遇到undefined
之前运行
希望有帮助。
相关文章:
- 有可能过滤来自嵌入式YouTube的声音吗
- 如何使用ngrepeat和双向绑定获得指令的隔离范围
- 为什么我的d3.jsselectAll+过滤器没有过滤
- 如何将ngrepeat下的ngmodel绑定到$scope
- Angular ngRepeat:重复错误(尽管没有重复的密钥)
- ui网格日期单元格过滤器,过滤日期格式导致显示错误的日期
- Angular:使用选择列表选择过滤代码中的对象
- 在单击时过滤 JSON
- 如何在BookshelfJS中通过加入来过滤结果
- 如何按对象反转Angular ngRepeat的顺序's键,这些键是数字键
- 如何使用javascript过滤复杂的json对象
- 如何应用带过滤器的ng if来过滤记录,并在同一页面中显示两个不同的视图
- 过滤AngularJs中的数据
- 自动完成jquery;t使用ngmodel和ngrepeat(angular)
- Angularjs-我们如何观察ngRepeat中的动态元素,以及动态ng模型名称和ANY更改时的过滤元素值
- AngularJS对ngRepeat对象的高级自定义过滤
- AngularJS对没有键的项进行ngRepeat过滤
- AngularJs如何用其他数组元素过滤ngRepeat
- 无法在控制器上访问ngRepeat的过滤结果
- 无法在ngRepeat - AngularJS中引用过滤数组