Tôi đang cố gắng liên kết với rootscope để tôi có thể đặt sự hiện diện trên một máy chủ khác khi người dùng đăng nhập. Đây là mô-đun của tôi.angularjs Xem các thay đổi về 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'
})
})
})
Không có bộ điều khiển vì nó chỉ là sự hiện diện toàn cầu của người dùng và không liên quan gì đến DOM.
Tính năng này không hoạt động, đồng hồ chạy một lần nhưng không bao giờ trở lại các thay đổi tiếp theo. Cảm ơn bạn đã giúp đỡ.
Chỉnh sửa: Mã Login trông như thế này:
$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
});
};
Mã này cập nhật tốt trong DOM. Nó cho thấy tên người dùng trong html ví dụ:
a.user(ui-if="currentUser", ng-href="/user/{{currentUser._id}}") {{currentUser.username}}
RootScope chỉ là phạm vi gốc ví dụ này của ứng dụng mà bạn sẽ muốn sử dụng một dịch vụ/nhà máy thay vào đó và bằng cách nào đó vẫn tồn tại sự thay đổi sự hiện diện ở đâu đó. –
@xmltechgeek bạn có thể đưa ra ví dụ về cách thực hiện đúng không? Điều đó nghe có vẻ giống như những gì tôi cần tìm hiểu cảm ơn – Harry
thử đặt '$ rootScope.currentUser' thành giá trị giả trên lỗi cũng như để kiểm tra xem đó có phải là nguyên nhân hay không. – basarat