我是 AngularJS 的新手,需要一些帮助,我有一个“AppCtrl”,从那里我有一个 HTTP webservice 调用 - 并且需要在我的其他 Controller 中访问 webservice 调用响应。
angular.module('starter.controllers', [])
.controller('AppCtrl', function($scope, $http) {
$scope.webservice_url = "http://webserviceurl.com/";
$http.get($scope.webservice_url+"?action=get_settings").success(function(data, status, headers, config) {
$scope.stations = data.stations;
});
})
这很好用 - 我可以访问模板中的 $scope.stations - 但现在我想访问我的“PlaylistCtrl” Controller 中的 $scope.stations,但这是未定义的 :(
.controller('PlaylistCtrl', function($scope, $stateParams) {
console.log($scope.stations); // is undefined :(
})
如何在加载“PlaylistCtrl”之前确保 http 调用“完成”(成功)...
最佳答案
如果可能,您应该将 http 转换为服务/工厂
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope, dataService) {
dataService.then(function (data) {
$scope.data = data
})
});
app.controller('SecondCtrl', function($scope, dataService) {
dataService.then(function (data) {
$scope.secData = data
})
});
app.service('dataService', function ($http, $q){
var defferer = $q.defer()
$http.jsonp('http://ip.jsontest.com/?callback=JSON_CALLBACK').success(function (data){
defferer.resolve(data)
})
return defferer.promise
})
http://plnkr.co/edit/8k97DngZ8KoFOBPFJG82?p=preview工作示例
关于AngularJS AppCtrl 等待 HTTP 事件成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24302199/