![](/img/trans.png)
[英]Is it possible to load more pages with javascript inside using infinity-scroll?
[英]Authorization interceptor with Infinity-scroll in AngularJS
我正在使用angular-http-auth
来拦截401响应,以便显示登录对话框,并在授权用户时重试失败的请求。
由于我使用的是infinity-scroll
,因此每增加一次上传,我都会增加一个偏移值:
var upload = function () {
dataResource.query($scope.model).then(function (result) {
angular.forEach(result.items, function (value) {
$scope.items.push(value);
});
});
}
$scope.uploadMore = function () {
$scope.model.Offset = $scope.model.Offset + 10;
upload();
};
upload();
当我的页面加载完毕后,它会立即向服务器upload()发出两个请求,此请求是从此指令调用的,并通过infinity-scroll
将其发送到uploadMore()。
但是,用户登录后, 该页面不会显示前10个条目,而是连续2次显示11-20个项目 。
当我尝试调试它时,我注意到当angular-http-auth
重试请求时,这两个查询使用的偏移量值增加了10( $scope.module
参数)。
函数upload()
和uploadMore()
在angular-http-auth
之前运行了2次,所以我猜这就是为什么拦截器对两个查询都使用更新参数的原因。
有人可以帮我解决这个问题吗?
因此,您可以解决此问题,防止执行请求,直到上一个操作完成为止。 更快的方法是:
var pending = false;
var upload = function () {
if(!pending) {
pending = true;
dataResource.query($scope.model).then(function (result) {
pending = false;
angular.forEach(result.items, function (value) {
$scope.items.push(value);
});
});
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.