39

ユーザーがログインしたときに別のサーバーにプレゼンスを設定できるように、rootscope にバインドしようとしています。これが私のモジュールです。

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

2 に答える 2

69

構文はそうでは$rootScope.$watch('currentUser')ありませんでした$rootScope.$watch($rootScope.currentUser)

于 2013-06-06T20:35:07.623 に答える