1

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

我无法弄清楚如何让控制器知道scope.req.rows已更新。如果我scope.$apply()在它之后添加,我会进入运行摘要阶段。如果我使用 $qresolve函数,它会返回并且不再返回循环结果。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); 
4

1 回答 1

0

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

更新:我模拟 http 请求并将其延迟 1000 毫秒到 30000 毫秒。我钢铁没有任何范围问题。 http://jsbin.com/wasoxe/4/edit?js,输出

于 2015-08-20T06:25:12.323 回答