【发布时间】:2017-06-29 01:46:33
【问题描述】:
我有一个应用程序,它获取数据集合(即 400 个对象)并将其存储在一个数组中。在我看来,我正在创建一种无限滚动,基本上当页面加载时,它会插入 5 条记录。然后我在底部有一个标记为 more 的按钮,该按钮转到数据数组并将其分割为 ngRepeat 指令中正在使用的数组。
起初它开始工作,但一直失败。该函数正在被触发,但带有 ngRepeat 的列表没有更新。
我的控制器示例是:
function ActivityController($uibModal,$http,$q, UserService) {
var vm = this;
vm.activity = [];
vm.activityData = [];
vm.maxItems = 5;
vm.getMoreData = getMoreData;
function getMoreData(){
vm.activityData = vm.activity.slice(0, vm.activityData.length + 5);
}
UserService.getUserActivity()
.then(function (response) {
vm.activity = response.data;
vm.activityData = vm.activity.slice(0, 5);
});
}
查看:
<ul class="list-group">
<li ng-repeat="activity in activityCtrl.activityData | orderBy: 'date':false " class="list-group-item">
<p class="nm">
<i class="" aria-hidden="true"></i>
<strong>@{{ activity.user }}</strong> @{{ activity.operation }} @{{ activity.type }} @{{ activity.name }} no Gestor</p>
<small class="text-muted">@{{ activity.diff}}</small>
</li>
</ul>
<button ng-click="activityCtrl.getMoreData()">more</button>
【问题讨论】:
-
如果你在
getMoreData()的末尾加上console.log(vm.activityData)会发生什么。scope是否得到更新但更改未反映在视图中? -
也许如果你举个例子(比如this plunker)它会帮助说明问题
-
您能分享您处理的数据吗?我创建了一个fiddle,但我无法重现该问题。
orderBy过滤器可能有问题。 -
为什么将 false 传递给 orderBy,这是默认设置?
标签: javascript angularjs arrays angularjs-scope angularjs-ng-repeat