cg-忙于连续的承诺

时间:2017-04-27 12:39:13

标签: angularjs angular-promise

我有一个工厂,它使用服务($ 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时有效。

有没有更好的方法呢?如何从工厂公开一些持久的承诺,以便它在每次新呼叫时更新视图?

1 个答案:

答案 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-busytrue):

false

<div cg-busy="busyIndicator.busy"> {{data.var1}} {{data.var2}} ... </div> 需要在busy对象中使用,以共享工厂和视图之间的引用。另外,请检查busyIndicator是否正常工作,并使用硬编码的cg-busy值。

相关问题