我有一个工厂,它使用服务($ http调用)存储并定期更新一些数据。每次更新数据时,我都希望视图中的忙指示符。工厂公开数据对象和承诺。
angular.module('myUI')
.factory('statusFactory', function ($timeout, statusService) {
var promise = {};
var data = {};
function update(){
angular.extend(promise, statusService.status().$promise).then(function(response){
angular.extend(data, response);
});
$timeout(update, 10000);
}
update();
return{
data: data,
promise: promise
}
});
在控制器中,我将这些变量绑定到范围:
$scope.statusPromise = statusFactory.promise;
$scope.data = statusFactory.data;
最后在视图中我展示了数据
<div cg-busy="statusPromise">
{{data.var1}}
{{data.var2}}
...
</div>
现在数据正在完美更新,但cg-busy什么也没做。每次$ http调用被解析时,我都会期待忙碌的图标。它在我直接在控制器中使用statusService时有效。
有没有更好的方法呢?如何从工厂公开一些持久的承诺,以便它在每次新呼叫时更新视图?
答案 0 :(得分:0)
我会尝试这样的事情:
hide
将其绑定到angular.module('myUI')
.factory('statusFactory', function ($timeout, statusService) {
var promise = {};
var data = {};
var busyIndicator = {busy: false};
function update(){
busyIndicator.busy = true;
angular.extend(promise, statusService.status().$promise).then(function(response){
angular.extend(data, response);
busyIndicator.busy = false;
});
$timeout(update, 10000);
}
update();
return{
data: data,
promise: promise
}
});
:
$scope
然后将其绑定到$scope.busyIndicator= statusFactory.busyIndicator;
(我认为它需要cg-busy
或true
):
false
<div cg-busy="busyIndicator.busy">
{{data.var1}}
{{data.var2}}
...
</div>
需要在busy
对象中使用,以共享工厂和视图之间的引用。另外,请检查busyIndicator
是否正常工作,并使用硬编码的cg-busy
值。