在我的工廠中,我撥打了服務電話。如果我從該調用中得到響應,我想在控制器中執行一個操作(即調用函數doAction())。 雖然我需要一些幫助。由於我的代碼現在正在工作,即使服務調用失敗,它也會在控制器中執行操作。
如果服務調用失敗,代碼會進入工廠的Catch部分,但仍返回到控制器,以便達到doAction() - 方法。
我該如何避免這種情況?謝謝你的時間,並原諒一個可能的愚蠢問題。我對Angular很新穎。
在我廠:
app.factory('myFactory', function ($http) {
return {
callService: function() {
return $http.post("http://xxxxx", {}, {headers: {'Content-Type': 'application/x-www-form-urlencoded'}})
.then(function(response) {
return response.data;
})
.catch(function(response) {
console.error(response.status, response.data);
});
},
};
});
在我的控制器:
var app = angular.module('indexapp', ['ngRoute']);
app.controller('indexController', function($scope, myFactory) {
$scope.makeServiceCall = function() {
var data = myFactory.callService();
data.then(function (result) {
doSomeAction();
});
};
});
謝謝。您的解決方案都可以工 – chichi