我正在处理一个项目,而且我很难通过MainController
将变量从NavbarController
传递到rootScope
。
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;
}
Filddle:http://jsfiddle.net/6v0fx6d2/1/
说明:
我正在使用ngRoute,所以我简化了代码,在注释中我使用ng-view来渲染模板,因此导航栏是我正在使用的基本模板。
答案 0 :(得分:0)
如果你改变你的html结构,它将起作用。
<div ng-controller="MainController">
{{name}}
</div>
<nav ng-controller="NavbarController">
<ul>
<li>{{windowName}}</li>
</ul>
</nav>
在angularjs中,控制器按照它们在代码中出现的顺序执行。因此,在您的情况下,windowName未设置。因此它在NavbarController中不可用
答案 1 :(得分:0)
好的,我发现了问题。
要打印rootScope变量,您需要添加{{$ route.windowName}}。
此外,如果您将ExpressJS与HoganTemplate一起使用,请确保更改 Hogan小胡子括号:
app.locals.delimiters = '{{{ }}}';