Я создал этот HTTP сервис:
(function() {
"use strict";
angular.module("inspectionReview").factory("inspectionReviewServices", ["$http", "config", inspectionReviewServices]);
function inspectionReviewServices($http, config) {
var serviceAddress = config.baseUrl + "api/InspectionReview/";
var service = {
getValues: getValues
};
return service;
function getValues(objectId, frequencyId) {
return $http.get(serviceAddress + "getValuesByObjectTypeId/" + objectId + "/" + frequencyId);
}
}
})();
И здесь я использую его в контроллер, чтобы получить данные:
function checkInspection() {
var frequencyId = 5;
inspectionReviewServices.getValues($scope.object.Id, frequencyId).then(function (result) {
$scope.someData = result.data;
});
}
Когда я вызываю функцию checkInspection
мне нужно дождитесь, пока свойство $ scope.someData будет заселено данными и только после того, как оно будет заполнено данными, тогда могут быть выполнены дальнейшие строки. В настоящее время я получаю обещание и код выполняется дальше.
EDIT (в соответствии с ответом Даррена):
Я изменил мою службу и функцию, которая вызывает обслуживание:
function getValues2(objectId, frequencyId) {
return $http.get(serviceAddress + "getValuesByObjectTypeId/" + objectId + "/" + frequencyId).then(function (result) {
return result.data;
});
}
и здесь есть функция, которая требует обслуживания в контроллере:
function checkInspectionReviewValidety() {
var frequencyId = 5;
return inspectionReviewServices.getValues2($scope.object.Id, frequencyId)
}
Но все же я не получаю желаемого результата.
Как изменить функцию checkInspection, чтобы она дождалась, пока свойство $ scope.someData не будет заполнено данными?
Ну, вы не можете. Положите логику, которая нуждается в 'result.data' в блоке' then'. –
Вы должны передать в работу, которую хотите сделать как функцию. – Casey