我在加载页面后立即在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);
答案 0 :(得分:0)
我构建简单的演示,它的工作原理。如果我错了,请纠正我。
<强>更新强>: 我嘲笑http请求并将其延迟形成1000毫秒到30000毫秒。而我钢铁没有任何范围问题。 http://jsbin.com/wasoxe/4/edit?js,output