ユーザーがログインしたときに別のサーバーにプレゼンスを設定できるように、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}}