观看根目镜的变化
我试图绑定到rootcope,以便在用户login时可以在不同的服务器上设置状态。 这是我的模块。
angular.module('presence', [ ] ) .run(function ($rootScope) { $rootScope.$watch($rootScope.currentUser, function () { console.log('change currentUser') console.log($rootScope.currentUser) presence.setGlobal({ u: $rootScope.currentUser, s: 'on' }) }) })
没有控制器,因为它只是关于用户的全球存在,而与DOM无关。
这不工作,手表运行一次,但从来没有再次在随后的变化。 谢谢你的帮助。
编辑:login代码如下所示:
$scope.login = function() { $http.post('http://localhost:3000/login', $scope.user).success(function(res, status) { if (res && res._id) { $rootScope.currentUser = res } }).error(function(res, status) { $scope.error = res.err }); };
此代码在DOM中更新正常。 它在html中显示用户名,例如:
a.user(ui-if="currentUser", ng-href="/user/{{currentUser._id}}") {{currentUser.username}}
语法是$rootScope.$watch('currentUser')
不是$rootScope.$watch($rootScope.currentUser)
有些东西需要更改$rootScope.currentUser
,以便能够注意到其中的任何更改。 你已经分享了代码。
还需要在angularJS循环内部( http://docs.angularjs.org/guide/concepts )进行$rootScope.currentUser
更改。 如果是在外部完成,您可以调用$ digest( http://docs.angularjs.org/api/ng。$ rootScope.Scope#$ digest)