Próbuję powiązać z rootcopem, dzięki czemu mogę ustawić obecność na innym serwerze, gdy użytkownik się loguje. Oto mój moduł.angularjs Obserwowanie zmian korzeni
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'
})
})
})
Nie ma kontrolera, ponieważ chodzi tylko o globalną obecność użytkownika i nie ma nic wspólnego z DOM.
To nie działa, zegarek uruchamia się raz, ale nigdy więcej, po kolejnych zmianach. Dzięki za pomoc.
Edycja: Kod logowania wygląda następująco:
$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
});
};
Ten kod aktualizuje porządku w DOM. Pokazuje nazwę użytkownika w formacie HTML, na przykład:
a.user(ui-if="currentUser", ng-href="/user/{{currentUser._id}}") {{currentUser.username}}
RootScope jest tylko zakres korzeń dla tej instancji aplikacji będziesz chciał zamiast tego używać usługi/fabryki i jakoś utrzymywać gdzieś zmianę obecności. –
@xmltechgeek możesz podać przykład, jak to zrobić poprawnie? To brzmi jak to, czego potrzebuję się uczyć dzięki – Harry
spróbować ustawić '$ rootScope.currentUser' na fałszywą wartość przy błędzie, a także sprawdzić, czy to jest przyczyną. – basarat