Подтвердить что ты не робот

Angularjs Наблюдение за изменениями корнеплодов

Я пытаюсь привязать к корнеустройству, чтобы я мог установить присутствие на другом сервере при входе пользователя в систему. Здесь мой модуль.

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.

Это не работает, часы запускаются один раз, но никогда больше не при последующих изменениях. Благодарим за помощь.

Изменить: Код входа выглядит следующим образом:

  $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}}
4b9b3361

Ответ 1

Синтаксис был $rootScope.$watch('currentUser') not $rootScope.$watch($rootScope.currentUser)

Ответ 2

Что-то нужно изменить $rootScope.currentUser, чтобы вы могли заметить какие-либо изменения в нем. Вы разделили код для этого.

Также изменения в $rootScope.currentUser должны выполняться внутри цикла angularJS (http://docs.angularjs.org/guide/concepts). Если это делается извне, вы можете вызвать $digest (http://docs.angularjs.org/api/ng. $RootScope.Scope # $digest)