cg-忙于连续的承诺

cg-busy on consecutive promises

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

有更好的方法吗?我如何公开工厂的一些持久承诺,以便它在每次新调用时更新视图?

我会尝试这样的事情:

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(我假设它需要 truefalse):

<div cg-busy="busyIndicator.busy">
    {{data.var1}}
    {{data.var2}}
    ...
</div>

busy 需要在 busyIndicator 对象内部使用,以在工厂和视图之间共享引用。此外,使用硬编码的 true 值检查 cg-busy 是否正常工作。