У меня есть фабрика с именем readingService
фабричный метод GetLastSyncTimestamp
возвращает DateTime из веб-службы, после вызова фабрики я назначил return DateTime переменной $scope.lastSyncTimestamp
, но проблема в том, что я могу получить 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);
есть ли способ получить данные за пределами обещания?
Создание сервиса
.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
В этом примере:
readingService.GetLastSyncTimestamp($scope.id).then(function(d) {
$scope.lastSyncTimestamp = d.data;
});
console.log($scope.lastSyncTimestamp);
Обещание не возвращается до console.log($scope.lastSyncTimestap);
строка выполнена. Вы можете обрабатывать данные в рамках обещания или инкапсулировать функциональность, которую вы хотите использовать с данными в функции, и вызывать эту функцию из обещания.