我是AngularJS的新手,需要一些帮助,我有一个“AppCtrl”,从那里我有一个HTTP webservice调用 – 并且需要在我的其他控制器中访问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”控制器中的$scope.stations,但这是未定义的:(
.controller('PlaylistCtrl',$stateParams) { console.log($scope.stations); // is undefined :( })
如何在加载“PlaylistCtrl”之前确保http调用已“完成”(成功)…
如果可能的话,你应该把http变成服务/工厂
var app = angular.module('plunker',[]); app.controller('MainCtrl',dataService) { dataService.then(function (data) { $scope.data = data }) }); app.controller('SecondCtrl',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 })