首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AngularJS中无限滚动的授权拦截器

AngularJS中无限滚动的授权拦截器
EN

Stack Overflow用户
提问于 2015-11-03 16:33:27
回答 1查看 57关注 0票数 1

我使用angular-http-auth来拦截401响应,以便显示登录对话框,并且当用户被授权时,可以重试失败的请求。

由于我使用的是infinity-scroll,所以我增加了一个偏移值,每增加一次上传:

代码语言:javascript
复制
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()发送2个请求(从这个指令调用),并由uploadMore()通过infinity-scroll发送。

但是,在用户登录后,页面不显示前10个条目,而是在一行中2次显示11-20项。

当我尝试调试它时,我注意到当angular-http-auth重试请求时,它对两个查询使用增加了10个偏移量值($scope.module参数)。

函数upload()uploadMore()angular-http-auth之前运行了2次,所以我猜这就是为什么拦截器在这两个查询中都使用更新的参数。

有人能帮我解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-03 16:39:18

因此,您可以解决此问题,防止执行请求,直到前面完成为止。更快的方法是:

代码语言:javascript
复制
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);
                 });                        
             });
            }
         }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33504370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档