Я пытаюсь вернуть некоторые данные из угловой службы, которая вызывает конечную точку REST, однако я не могу заставить поток данных правильно, так как он асинхронен.Невозможно вернуть данные списка из углового обслуживания в контроллер
Мой способ обслуживания.
appService.getApplicationSupportFiles = function() {
$http.post("/SEFlex/SEFlexAdmin/GetApplicationSupportFiles")
.then(function (response, status, headers, config) {
if (response.data) {
var list = JSON.parse(response.data.data);
return list;
}
});
}
Мой контроллер
function ShowApplicationFilesController($scope, $http, $modalInstance, $log, SEApplicationService, $rootScope, AlertsService) {
$rootScope.closeAlert = AlertsService.closeAlert;
$scope.supportFiles = [];
$scope.originalSupportFiles = [];
$scope.isBusy = false;
$scope.newFile = {
localFile: "",
cloudFile: "",
}
// Load the initial files
$scope.supportFiles = SEApplicationService.getApplicationSupportFiles();
$scope.originalSupportFiles = $scope.supportFiles;
$scope.addApplicationFile = function() {
var file = { LocalPath: $scope.newFile.localFile, ShareName: "b", FolderName: "c", FileName: "d" };
$scope.supportFiles.push(file);
$scope.newFile = { localFile: "", cloudFile: "" };
}
}
Проблема заключается вызов для заполнения supportFiles является асинхронным так supportFiles неопределен, когда originalSupportFiles пытается скопировать значения. Но также, когда я нажимаю на addApplicationFile(), он не может нажать на значение $ scope.supportFiles, поскольку он считает, что он не определен, поэтому он выглядит так, что значения вообще не загружаются, даже несмотря на то, что служба вызывается и возвращает данные ,
Что я сделал не так?
Посмотрите в '$ q' и возвращающимся обещания, вы» Я хочу вернуть обещание и использовать функцию .then(). – CollinD