我有以下$ rootScope变量,我用它来保存当前登录的用户权限级别,然后我从其他控制器访问此变量.有没有办法我可以观察rootScope变量的变化,以便更新控制器特定变量与根范围变量的任何更改?下面是我目前使用的代码,有人可以告诉我我做错了什么以及如何解决它?谢谢
在.run下的app.js中:
$rootScope.uPLevel = 0;
Run Code Online (Sandbox Code Playgroud)
.controller
$scope.$watch($rootScope.uPLevel, function() {
$scope.userPLevel = $rootScope.uPLevel;
}, true);
Run Code Online (Sandbox Code Playgroud)
Som*_*ens 54
第一个参数$watch应该是字符串或函数(docs).现在你传递$rootScope.uPLevel控制器初始化的值.
$scope.$watch(function() {
return $rootScope.uPLevel;
}, function() {
$scope.userPLevel = $rootScope.uPLevel;
}, true);
Run Code Online (Sandbox Code Playgroud)
两个旁注:
$rootScope.uPLevel只是一个整数(如您的示例所示),那么您不需要传递true第三个参数 - 这仅适用于数组和对象.如果您确实想观看收藏,那么我建议您使用$watchCollection.小智 27
我建议像这样观察$ rootScope变量:
$scope.$watch('$root.uPLevel', function() {
$scope.userPLevel = $rootScope.uPLevel;
});
Run Code Online (Sandbox Code Playgroud)
这样,当前指令/控制器被销毁.它也清除了手表.在$ rootScope.$表壳中,手表永远保持不变.
| 归档时间: |
|
| 查看次数: |
46853 次 |
| 最近记录: |