我想在退出角度控制器之前等待http响应。我写了以下代码。但是id不起作用,因为控制器在返回http调用之前仍然退出。任何人都可以帮我解决这个问题吗?提前谢谢。
var app = angular.module('app', []);
app.factory('MyService', function ($http) {
return $http.get('/api/endpoint').then(function(res){
return res.data;
});
});
app.controller('MyController', ['$scope', '$http', 'MyService', function($scope, $http, MyService){
MyService.then(function(data){
$scope.myVarialbe = data;
})
}]);
答案 0 :(得分:0)
wmemcpy
答案 1 :(得分:0)
您可以像这样factory
使用返回请求回复 promise
,并在控制器中使用{em>返回 .then
。
promise
答案 2 :(得分:-1)
使用$ q更好。
例如:
app.factory('MyService', ['$http', '$q', function($http, $q) {
return {
getData: function() {
var deferred = $q.defer();
$http.get('/api/endpoint')
.then( function(resp) {
deferred.resolve( resp.data );
});
return deferred.promise;
}
};
}]);
app.controller('MyController', ['$scope', 'MyService',function($scope, MyService){
MyService.getData().then(function(data){
$scope.myVarialbe = data;
})
}]);