Async在摘要阶段运行

时间:2015-08-20 05:41:27

标签: javascript pagination angularjs-scope angular-promise alasql

我在加载页面后立即在Angular服务中运行此代码。控制器 $ scope 作为参数传递给此提取所属的函数。该功能是 $ q 承诺。

我无法弄清楚如何让控制器知道scope.req.rows已更新。如果我在它之后添加scope.$apply(),我会遇到正在运行的摘要阶段。如果我使用$ q resolve函数,它将返回并且不再返回循环结果。 scope.$evalAsync()$timeout似乎没有效果(至少没有设置超时> 0)。同样适用于scope.$watch

如何让控制器知道值已更新?

for (var page = 0; page < nbPages; page++) {
(function (pageNum) {

    that.get(url, 
             where, 
             res.pageSize * page, 
             res.pageSize)

        .then(function Success(data) {
        $log.info('Result of page ' + pageNum + ' received');

        for (row in data) {
                scope.req.rows++;
        }

    }).catch(function chunkFail(err) {
        reject(err);
    });

})(page); 

1 个答案:

答案 0 :(得分:0)

我构建简单的演示,它的工作原理。如果我错了,请纠正我。

<强>更新: 我嘲笑http请求并将其延迟形成1000毫秒到30000毫秒。而我钢铁没有任何范围问题。 http://jsbin.com/wasoxe/4/edit?js,output