我正在使用ng-重复 .Actually从服务获取数据并在视图上显示,当用户滚动到底部意味着当用户到达底部时,我将执行到底部的something.When,我正在更改数组的争用,.I在ng-重复数组(显示数组)中得到正确的争用,但它不反映为什么?我可以使用$scope.apply()还是$scope.digest()
这是我的密码
http://plnkr.co/edit/XgOxJnPXZk4DneJonlKV?p=preview
在这里,我要更改显示数组的争用,它不反映视图。
if (container[0].offsetHeight + container[0].scrollTop >= container[0].scrollHeight) {
if(scope.var<scope.arrays.length)
scope.display=[];
var nextvar =++counter;
var increment=counter+1
console.log("nextvar:"+nextvar+"increment:"+increment)
scope.display=scope.arrays[nextvar].concat(scope.arrays[increment]);
console.log(scope.display)
}
发布于 2015-06-09 20:21:27
正如@Claies所提到的,您应该使用apply()。尽管摘要()可能在well.apply()内部调用摘要()时起作用。他还提到,每次滚动时,似乎正在存储页码的变量都会被重置为0。您应该将其存储在该处理程序之外的范围变量中。我试着用最小的零钱来修正
http://plnkr.co/edit/izV3Dd7raviCt4j7C8wu?p=preview
.directive("scrollable", function() {
return function(scope, element, attrs) {
var container = angular.element(element);
container.bind("scroll", function(evt) {
console.log('scroll called'+container[0].scrollTop);
var counter = scope.page;
if (container[0].scrollTop <= 0) {
if (scope.var > 0)
scope.display = scope.arrays[--scope.var].concat(scope.arrays[scope.var+1]);
}
if (container[0].offsetHeight + container[0].scrollTop >= container[0].scrollHeight) {
if (scope.var < scope.arrays.length)
scope.display = [];
var nextvar = ++counter;
var increment = counter + 1
console.log("nextvar:" + nextvar + "increment:" + increment)
scope.display = scope.arrays[nextvar].concat(scope.arrays[increment]);
console.log(scope.display)
scope.page = counter;
}
scope.$apply();
});
};
})
一般来说,我会以不同的方式来实现这一点。例如,在列表的底部有一个旋转轮,当显示时,您将获得其余的数据。很难给你一个完全工作的柱塞。可能您应该在柱塞中有多个JSON文件,每个文件包含一个页面的数据,这样我们就可以将数据添加到显示列表的底部。
发布于 2015-06-09 20:03:50
修改display
数组之后,只需调用scope.$apply()
,以便它运行$digest
循环并更新视图。另外,您需要在控制器或指令中初始化scope.var
,并有条件地修改它。
如果这是你想要的,我不会。我修改了柱塞看一看。http://plnkr.co/edit/J89VDMQGIXvFnK86JUxx?p=preview
https://stackoverflow.com/questions/30746490
复制