javascript - AngularJS - 无法访问 RootScope

标签 javascript controller scope angularjs

奇怪的问题, 我无法访问在 CtrlA 中设置的 CtrlB 变量中的 $rootScope。

HTML:

<div role="main" class="container_9" ng-controller="CountryCtrl" ng-init="updateToken('<?php echo $TOKEN; ?>')">  

CtrlA

app.controller('CountryCtrl', function ($scope,$rootScope, $http) {
  $scope.updateToken = function(token) {
        $rootScope.token = token;
  } 
});  

CtrlB

app.controller('DealerListCtrl', function ($scope, $http, $rootScope, dealerService) {
  $scope.dealer = [];
    $http.get('files/framework/dealer/'+ $rootScope.token).success(function(data) {
        $scope.dealerall = data;
    });
  //$scope.dealerall = dealerService.api.get({token: $scope.token});
  $scope.orderProp = 'name';

});  

错误信息:

/framework/dealer/undefined 500 (Internal Server Error)   

我做错了什么?

更新
插件代码:
http://plnkr.co/edit/r559zyMKjA64xSdmrTem

无法运行...

最佳答案

这里有两个关键问题:首先,您在应该使用服务时使用了 $rootScope,其次,您假设了 Controller 的执行顺序。如果只是一秒钟的事情,您可以设置 $watch 命令来监视更改,以确保您的第二个 Controller 在设置时具有更新的值。

但是你不应该污染全局范围。将您的 token 包装到可以注入(inject)的服务中,您可以在该服务上 $watch 更改。也就是说,如果不知道您的 Controller 在什么上下文中运行,我无法发布任何更具体的内容(即代码)。

但我希望这对您有所帮助!如果需要,请使用更多信息更新您的帖子,我会深入探讨。实际上,如果您可以创建一个我可以直接修改的 Plunker 或 jsFiddle,那就太好了。

关于javascript - AngularJS - 无法访问 RootScope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14201899/

相关文章:

javascript - 没有 src 的 iframe 但仍然有内容?

javascript - 单击元素,直到使用 isDisplayed 显示另一个元素

javascript - Web 浏览器 (Chromium/Firefox) 在文件对话框后 1-2 秒内无响应

grails - View Controller ,根据身份验证指定要显示的路径

javascript - 如何在 AngularJS 中动态更改 Controller 之间的数据

javascript - 函数在 JS 对象中未定义

javascript - Bootstrap 3 - 如果将 <p> 插入其中,则列中的第一个 <div> 会破坏布局

ios - 将 iPad 编程为 Windows 远程游戏 handle - 从哪里开始?

javascript - Controller 内的 Angular $http 函数作用域

c - 这个指针返回安全吗?