[英]How to Pass $rootScope variable from Controller to Service in Angular JS
[英]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.