Я пытаюсь вызвать несколько запросов $ http на фабрике, которую я использую, чтобы вымыть несколько входов с данными и установить выбор по умолчанию. Я хочу, чтобы затем вызывать обещание, как только все три из них сделаны для вызова данных реальной формы (если они есть, иногда их не будет, в этом случае они ничего не сделают), чтобы перезаписать установленные по умолчанию.
Так вот моя попытка это -
завод я создал фабрику, чтобы позвонить все 3 входа и их значению по умолчанию (я посылаю их по отдельности, я не могу изменить это сейчас). Это выглядит так:
.factory("getDefaults", function() {
return {
instructions: function() {
$http({
method: "GET",
url: "/getStringDropdown/materials"
})
.success(function(data, status, headers, config){
$scope.instructions.materials = data.text;
});
$http({
method: "GET",
url: "/getStringDropdown/reinforce"
})
.success(function(data, status, headers, config){
$scope.reinforce = data.options;
$scope.instructions.reinforce = $scope.reinforce[data.default];
});
$http({
method: "GET",
url: "/getStringDropdown/procedure"
})
.success(function(data, status, headers, config){
$scope.procedures = data.options;
$scope.instructions.procedures = $scope.procedures[data.default];
});
//return data here?
}
};
})
Мой вопрос здесь - мне нужно вернуть данные здесь? А также я могу определить области, которые используются здесь (как указано в фактическом контроллере). Я почти уверен, что это неправильно, но я не могу найти хороший пример того, как правильно структурировать что-то подобное.
Звонки в регуляторе,
Так я контроллер моего мышления я бы тогда попробовать что-то вроде этого -
getDefaults.instructions().then(function(){
//possible return data here
//AFTER data is flushed out call farm data
$http({
method: "GET",
url: "/getSavedFormData/formID"
})
.success(function(data, status, headers, config){
$scope.instructions.materials= data.materials;
$scope.instructions.procedures = $scope.procedures[data.procedure];
$scope.instructions.reinforce = $scope.reinfoce[data.reinforcement];
});
});
Так большая картина - Я пытаюсь получить эти 3 вызова в запустить и заполнить, а затем второй. Я не уверен, что может быть или не быть лучшим подходом, фабрика, похоже, имела смысл, основываясь на попытке объединить 3 вызова в одно место с обещанием, когда все будет сделано. Я думаю, мне нужно вернуть данные, но было бы неплохо, если бы я мог определить области для контроллера на заводе. Я все еще получаю свою опору с угловатой, поэтому любое/все указания будут высоко оценены. Спасибо за прочтение!!
Вы пробовали использовать $ q.all() ? (например, здесь: http://fdietz.github.io/recipes-with-angular-js/consuming-external-services/deferred-and-promise.html) –