AngularJS AppCtrl 等待 HTTP 事件成功

标签 angularjs angularjs-scope angularjs-routing ionic-framework

我是 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/

相关文章:

javascript - 在具 Angular html 容器中捕获焦点

javascript - 如何将范围数据绑定(bind)到使用 Javascript 动态生成的模型?

angularjs - 如何在 AngularJs 中创建用户友好和 SEO 友好的 URL

angularjs - Angular - ui-router 获取之前的状态

javascript - AngularJS:如何在 routeChangeStart 事件中更改位置路径?

javascript - 使用 Angular 将字符串中编码的 HTML 转换为输入字段的纯文本

angularjs - 使电话号码可按 Angular 点击

javascript - 在 $state.go 之后执行 $window.location.reload(true)

javascript - ng-click 指令不调用 Controller 函数

javascript - 延迟 Angular Directive(指令)模板的编译,直到功能完成