我有一个角度应用,将ng-app
放在<html>
标记内而不是正文中,这样角度范围就会覆盖<title>
。但是,从角度控制器中,$scope
变量无法在<title>
但$rootScope
内输出任何内容。我不明白为什么会这样。据我所知,$scope
是控制器的本地,$rootScope
是全局的。但是,在这种情况下,我确保将ng-app
放置在<html>
标记中,以便涵盖<title>
。就ng-controller
而言,我并没有在我的html页面中的任何地方指定它。
<html ng-app="my-app">
<head>
<meta charset="utf-8">
<title>{{scopeVar}}</title>
任何提示?
答案 0 :(得分:1)
正如@deceeze指出的那样,$ rootScope工作但$ scope的原因并不是因为在使用ui-router
时,控制器与ui-view
绑定。因此,除此之外的任何内容都不会被$scope
覆盖。但另一方面,$rootScope
是全球性的,涵盖ng-app
内的任何内容。
答案 1 :(得分:0)
FATAL
将你的控制器放在PROBLEM
它也适用于范围。因为$ scope在其控制器中可用,而$ rootScope是全局的,可以完成应用程序。
答案 2 :(得分:0)
感激,当您添加&#34; ng-app&#34;标签Angular为您提供$ rootScope。当您创建控制器时,Angular会为您提供$ scope。
喜欢创建小型控制器,然后放在您想要的位置。创建小型控制器时,可以为每个控制器使用$ scope。下面我创建了两个控制器,一个用于处理器de header,另一个用于处理我的身体。 &#34; scopeVar &#34;变量将在 controller1 中可用。
<html ng-app="my-app">
<head ng-controller="controller1">
<meta charset="utf-8">
<title>{{scopeVar}}</title>
</head>
<body>
<div ng-controller="controller2">
</div>
</body>
</html>
但是,如果您想从控制器与$ rootScope进行通信,请不要使用$ rootScope.somevariable =&#39; foo&#39;。使用$ broadcast和$ emmit服务来做到这一点。例:
$rootScope.$broadcast('event name', 'foo');
在应用程序的RUN配置中,您可以听到:
$rootScope.$on('event name', function(param1){
// param1 will be 'foo'
// do something
});