gpt4 book ai didi

javascript - 为什么 ng-bind 不显示 ng-click 设置的 rootScope 的值

转载 作者:行者123 更新时间:2023-11-30 05:32:53 25 4
gpt4 key购买 nike

我想在 $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 的 div -1 DOM 没有。为什么会这样?

最佳答案

您不必在 View 中使用 $rootScope,范围隐式绑定(bind)到 View (即使在 controller As 语法的情况下,别名成为属性在具有 Controller 实例引用值的 $scope 上)。除了独立作用域($scope.$new(true)) 之外的所有作用域($scope.$new()) 最终都继承自rootscope,因此您将拥有这些属性在 rootScope 上可用 在作用域上自动可用。所以这里你的 Controller MainController 的范围是从 rootScope 继承的。

Plnkr

作为更好的做法,始终将属性放在根作用域上的对象上(就像在 plunker 中一样),这样当您从子作用域对属性(根作用域上的对象的属性)进行任何更改时,更改就会得到反射(reflect)在父级上也是如此,因为它们都指向相同的引用。

关于javascript - 为什么 ng-bind 不显示 ng-click 设置的 rootScope 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25811180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com