当ng-repeat中的范围值改变时,显示下一系列数据

时间:2015-08-18 08:40:55

标签: angularjs angularjs-ng-repeat

我试过以下

startIndex = 0;
lengthIndex = 5;

<span aria-hidden="true" class="glyphicon glyphicon-chevron-left" ng-click="startIndex = startIndex-1"></span>
  <ul>
<li ng-repeat="week in mydata | limitTo:lengthIndex:startIndex">
 </ul>
<span aria-hidden="true" class="glyphicon glyphicon-chevron-left" ng-click="startIndex = startIndex-1"></span>

当范围值发生变化时,我希望显示下一组数据。但是当刷新页面时,它会正确显示数据,即数据切片。但是点击范围值正在变化,但数据不会改变。我该如何解决这个问题。

2 个答案:

答案 0 :(得分:0)

ng-repeat创建一个新范围因此,当您尝试访问startIndex时,它将访问子范围并仅更新子范围中的值。更改{的父范围中的值{1}}使用ng-repeat,如下所示

$parent.startIndex

或使<li ng-repeat="week in mydata | limitTo:lengthIndex:startIndex"> <span aria-hidden="true" class="glyphicon glyphicon-chevron-left" ng-click="$parent.startIndex = $parent.startIndex-1"></span> 成为一个对象,以确保访问和更新父属性。

startIndex

Here是根据您更新的代码

的工作示例

答案 1 :(得分:0)

当您使用ng-repeat时,角度摘要过程会一直持续到循环结束。 因此它将从范围中断开指向索引的链接,并在刷新后反映,因为它在那时提供了新的范围。

这只是一个带有$ scope的传统异步函数。$ apply()在最后调用,告诉AngularJS刚刚发生异步事件。

因此,当您需要更改范围变量时,必须使用$ scope。$ apply()。