为什么ng绑定不't显示通过ng单击设置的rootScope中的值
why ng-bind doesn't show values from rootScope set by ng-click
我想在$rootScope
中存储一个变量。当我有这样的结构时,一切都正常,第二个div显示值:
<html ng-app>
...
<body>
<button ng-click="$rootScope.pr = !$rootScope.pr"></button>
<div ng-class="{some:$rootScope.pr}">{{$rootScope.pr}}</div>
</body>
但当我有这样的结构时:
<body>
<div class="root-scope-value-1">{{$rootScope.mobileMenuCollapsed}}</div>
<div class="content-wrapper" ng-controller="MainController">
<nav class="navbar navbar-custom navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<div class="root-scope-value-2">{{$rootScope.mobileMenuCollapsed}}</div>
<button ng-click="$rootScope.mobileMenuCollapsed = !$rootScope.mobileMenuCollapsed">
类为root-scope-value-2
的div显示来自$rootScope.mobileMenuCollapsed
的值,但类为root-scope-value-1
的div(位于DOM上方)则不显示。为什么会这样?
您不必在视图中使用$rootScope
,作用域隐式绑定到视图(即使在controller As
语法的情况下,别名也会成为$scope
上的一个属性,该属性具有控制器实例引用的值)。除了独立作用域($scope.$new(true)
)之外的所有作用域($scope.$new()
)最终都是从rootscope继承的,因此rootscope上的可用属性将自动在作用域上可用。因此,这里您的控制器MainController
的作用域是从rootScope继承的。
Plnkr
作为一种更好的做法,总是将对象的属性放在rootscope上(如plunker中),这样当您从子作用域对属性(rootscope上对象的属性)进行任何更改时,这些更改也会反映在父作用域上,因为它们都指向同一个引用。
相关文章:
- Angular ng类需要帮助设置
- 将输入值设置为ng模型属性[Angular]时出现问题
- 从 Javascript 中设置 ng-model name
- Angularjs-设置不带ng选项的select的默认值
- 通过ng-if设置隐藏文本框的值
- 如何为通过ng-view指令或ng-controller指令创建的每个新作用域设置侦听器
- 如何在 AngularJS 的 ng 选项中设置值属性
- 如果是子对象,则使用Angular设置ng的父对象高度
- AngularJS - 嵌套的ng-重复选择/选项,获取/设置所选值
- 在 ng-click 中设置$scope变量指令
- 设置角度 ng 重复限制
- 将 ng 重复中的单选按钮设置为选中
- 智能表通过ng模型设置值时不会触发任何事件
- 将ng模型设置为与变量同名,而不是引用该变量
- ng设置动画以创建slideIn/slideOut过渡
- angular 1.3中的ng选项在集合异步设置时忘记了ng模型
- Angular Highcharts ng如何将其他数据系列设置为工具提示
- 如何设置ng对剑道自动完成无效
- 如何访问Angular JS模板指令中设置的值,如“ng class?”
- 为什么 AngularJS 在使用 ng-model 时不会在文本框上设置长度属性