我有以下$ rootScope变量,我用来保存当前登录的用户权限级别,然后我从其他控制器访问这个变量。有没有办法可以观察rootScope变量的变化,以更新控制器特定的变量与根范围变量的任何更改?以下是我到目前为止使用的代码,有人可以告诉我我做错了什么,如何解决?谢谢
在.run下的app.js中
$rootScope.uPLevel = 0;
.controller
$scope.$watch($rootScope.uPLevel,function() { $scope.userPLevel = $rootScope.uPLevel; },true);
$ watch的第一个参数应该是字符串或函数(
docs)。现在你在控制器初始化时传递$ rootScope.uPLevel的值。
$scope.$watch(function() { return $rootScope.uPLevel; },function() { $scope.userPLevel = $rootScope.uPLevel; },true);
两个旁注:
>将这个值存储在服务中而不是$ rootScope可能是谨慎的。>如果uPLevel只是一个整数(如你的例子所示),那么你不需要传递true作为第三个参数 – 这只适用于数组和对象。如果您确实想要收看,那么我建议使用$ watchCollection。