请帮助我了解如何更新嵌套分组ng-repeats的视图 假设我有以下模型 doc与页面有一对多的关系。
在视图中,我使用数组数组按行显示文档集合及其页面。
在控制器中我有方法添加文档的页面,但它没有更新视图
任何帮助表示赞赏。我稍后会提供代码
更新: 这是代码http://plnkr.co/edit/dGVW0QaUArf0okTJexMv
中的代码更新
所以,从代码中,我必须以某种方式激发分组更新,但我不知道如何实现这一点。有没有办法强制角度来检查ng-repeat项目中的嵌套集合?
更新: 更新了plunk示例。
答案 0 :(得分:3)
很高兴看到一些代码来理解什么更新的关系,但尝试把
$scope.$apply();
在控制器中更新视图的方法中。
如果正在进行摘要周期,可能会给您一个错误,这很好,因为这意味着正在更新某些内容。
如果是这样,你可以尝试
if(!$scope.$$phase){ $scope.$apply(); }
将检查作用域上是否正在运行$ digest,如果没有,它将运行它。
答案 1 :(得分:0)
因此,为了解决上述问题,必须将此行添加到控制器并更新标记。它将组发布到范围,并为文档集合中的每个文档循环添加观察者。
控制器:
$scope.docs.forEach(function (itm,idx) {
$scope.$watch('docs['+idx+'].pages', function (val) {
$scope.docs[idx].groups = $scope.groupBy(val,3);
},true);
});
查看:
<tr data-ng-repeat-start='doc in docs' >
<th> </th>
<th>{{doc.name}}</th>
</tr>
<tr data-ng-repeat='group in doc.groups'>
<td data-ng-repeat='page in group'>
{{page.name}}
</td>
</tr>
<tr data-ng-repeat-end>
<td> </td>
<td ><a href='#' data-ng-click = 'addPage(doc)'>addPage</a></td>
</tr>