Sunday, May 19, 2024
 Popular · Latest · Hot · Upcoming
109
rated 0 times [  115] [ 6]  / answers: 1 / hits: 61529  / 11 Years ago, sun, june 2, 2013, 12:00:00

I'm trying to bind to rootscope so that I can set presence on a different server when the user logins.
Here's my module.



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'
})
})
})


There's no controller because it's just about the global presence of the user and has nothing to do with the DOM.



This is not working, the watch runs once but never again on subsequent changes. Thanks for your help.



Edit: Login code looks like this:



  $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
});
};


This code updates fine in the DOM. It shows the username in the html for example:



a.user(ui-if=currentUser, ng-href=/user/{{currentUser._id}}) {{currentUser.username}}

More From » angularjs

 Answers
16

The syntax was $rootScope.$watch('currentUser') not $rootScope.$watch($rootScope.currentUser)


[#77859] Friday, May 31, 2013, 11 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
nicholas

Total Points: 188
Total Questions: 76
Total Answers: 103

Location: Honduras
Member since Sun, Dec 26, 2021
2 Years ago
;