簡體   English   中英

通過rootScope將變量從控制器傳遞到另一個控制器

[英]Pass variable from controller to another controller via rootScope

我正在處理一個項目,並且我很難通過rootScope將變量從MainController傳遞給NavbarController

Angular不會打印我通過$ rootScope從MainController傳遞給NavbarController的{{windowName}}變量。

所以這是即時通訊使用的代碼:

視圖:

<body>
  <nav ng-controller="NavbarController">
    <ul>
      <li>{{windowName}}</li>
    </ul>
  </nav>
  <!-- this is where i use ng-view instead of MainController -->
  <div ng-controller="MainController">
    {{name}}
  </div>
</body>

控制器:

var myApp = angular.module('myApp',[]);

function MainController($scope, $rootScope){
  $rootScope.windowName = 'Window name 95';

  $scope.name = 'Test name';
}

function NavbarController($scope, $rootScope){
  $scope.windowName = $rootScope.windowName;
}

網址: http//jsfiddle.net/6v0fx6d2/1/

說明:

我正在使用ngRoute,所以我簡化了代碼,在注釋中使用ng-view渲染模板,因此navbar是我正在使用的基本模板。

如果您更改html結構,它將起作用。

<div ng-controller="MainController">
    {{name}}
  </div>
  <nav ng-controller="NavbarController">
    <ul>
      <li>{{windowName}}</li>
    </ul>
  </nav>

在angularjs中,控制器按照它們在代碼中出現的順序執行。因此,在您的情況下,未設置windowName。 因此它在NavbarController中不可用

好吧,我發現了問題。

要打印rootScope變量,您需要添加{{$ route.windowName}}。

另外,如果將ExpressJS與HoganTemplate一起使用,請確保使用以下方法更改Hogan胡子支架:

app.locals.delimiters = '{{{ }}}';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM