在promise之外访问angularjs工厂数据

时间:2016-04-22 18:36:19

标签: javascript angularjs

我有一个名为readingService的工厂工厂方法GetLastSyncTimestamp从Web服务返回一个DateTime,在调用工厂后我已经在$scope.lastSyncTimestamp变量中指定了返回DateTime,但是问题在于我可以正确获得DateTime的承诺

 readingService.GetLastSyncTimestamp($scope.id).then(function(d) {
            $scope.lastSyncTimestamp = d.data;
            console.log($scope.lastSyncTimestamp);
        });

但在承诺之外我没有得到任何数据

 readingService.GetLastSyncTimestamp($scope.id).then(function(d) {
            $scope.lastSyncTimestamp = d.data;
        });

console.log($scope.lastSyncTimestamp);

有没有办法让数据超出承诺范围?

2 个答案:

答案 0 :(得分:1)

创建服务

  .service('DataService', function () {
            var service = {};
            service.defaultvalue= "1";
            return service;
        })

并将其注入控制器。 然后你可以在承诺中使用它:

dataservice.lastSyncTimestamp = d.data;

并且外面也会工作。

例如: https://github.com/leader80/angularjs-dataservice/blob/master/js/dataService.js

答案 1 :(得分:0)

在这个例子中:

readingService.GetLastSyncTimestamp($scope.id).then(function(d) {
    $scope.lastSyncTimestamp = d.data;
});

console.log($scope.lastSyncTimestamp);

console.log($scope.lastSyncTimestap);行执行之前,承诺未返回。您既可以处理promise中的数据,也可以封装您希望对函数中的数据执行的功能,并在promise中调用该函数。