我有一个名为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);
有没有办法让数据超出承诺范围?
答案 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中调用该函数。