Angularjs根镜注射不';如预期的那样传播
我正在尝试更改$rootScope变量的值,并让该变量可以由具有更新值的各种控制器访问。然而,由于某种原因,$rootScope中更改的值似乎没有被任何通过$rootScope访问它的控制器检测到 在本例中,为什么“child”不反映更改的值Angularjs根镜注射不';如预期的那样传播,angularjs,Angularjs,我正在尝试更改$rootScope变量的值,并让该变量可以由具有更新值的各种控制器访问。然而,由于某种原因,$rootScope中更改的值似乎没有被任何通过$rootScope访问它的控制器检测到 在本例中,为什么“child”不反映更改的值 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <script> document.write('<base
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script>
document.write('<base href="' + document.location + '" />');
</script>
<script data-require="angular.js@1.2.x" src="http://code.angularjs.org/1.2.15/angular.js" data-semver="1.2.15"></script>
<script type="text/javascript">
angular.module('myApp', [])
.run(function($rootScope) {
$rootScope.current = 'a';
})
.controller('ParentCtrl', ['$scope', '$rootScope',
function($scope, $rootScope) {
$scope.child = $rootScope.current;
}
])
</script>
</head>
<body ng-app="myApp">
<div>
<p>Value of "current": {{ current }}</p>
<button ng-click="$root.current = 'b'">Change value to 'b'</button>
<div ng-controller="ParentCtrl">
Value of "current" (within ParentCtrl): {{ current }}
<br>Value of "child" (via ParentCtrl injection of rootscope): {{ child }}
</div>
</div>
</body>
</html>
文件。写(“”);
angular.module('myApp',[])
.run(函数($rootScope){
$rootScope.current='a';
})
.controller('ParentCtrl',['$scope','$rootScope',
函数($scope,$rootScope){
$scope.child=$rootScope.current;
}
])
“current”:{{current}}的值
将值更改为“b”
“current”的值(在ParentCtrl内):{{current}
“child”的值(通过根范围的ParentCtrl注入):{{child}
这是我的名片。提前谢谢 这种方法应该有效,请查看Angularjs范围文档以更好地理解
文件。写(“”);
angular.module('myApp',[])
.run(函数($rootScope){
$rootScope.current='a';
})
.controller('ParentCtrl',['$scope','$rootScope',
函数($scope,$rootScope){
$scope.root=$rootScope;
}
])
“当前”的值:{{current}
将值更改为“b”
“current”的值(在ParentCtrl内):{{current}
“child”的值(通过根范围的ParentCtrl注入):{{root.current}
您必须注意下面的rootScope变量
$scope.$watch(function() {
return $rootScope.current;
}, function() {
$scope.child = $rootScope.current;
},
true);
这是工作表。您可以阅读有关$watch的更多信息,因为您的ng单击没有更新子变量。您的子变量已初始化,但从未更新过。@TechCrunch我对更改子变量不感兴趣,但是…我对自动更新子值以反映它所指向的“当前”变量感兴趣。是否有其他机制用于观察$rootScope的更改?是的,您应该使用$watch或$WatchCollectionThank;这正是我所需要的!
$scope.$watch(function() {
return $rootScope.current;
}, function() {
$scope.child = $rootScope.current;
},
true);