반응형
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}}
구문은$rootScope.$watch('currentUser')것은 아니다.$rootScope.$watch($rootScope.currentUser)
뭔가 바뀌어야 해$rootScope.currentUser어떤 변화도 알아차릴 수 있도록 하기 위해서요.당신은 그것에 대한 코드를 공유했습니다.
에 대한 변경도 있습니다.$rootScope.currentUser각도 안에서 일어날 필요가 있다JS 루프(http://docs.angularjs.org/guide/concepts)).외부로 문의하실 경우 $1900(http://docs.angularjs.org/api/ng.$rootScope.Scope#$digest))으로 문의하실 수 있습니다.
언급URL : https://stackoverflow.com/questions/16888166/angularjs-watching-rootscope-changes
반응형
'programing' 카테고리의 다른 글
| json.loads는 후행 콤마를 무시할 수 있습니까? (0) | 2023.03.04 |
|---|---|
| 스위치 문에서 대/소문자 문 들여쓰기에 대한 eslint 규칙을 수정할 수 없습니다. (0) | 2023.03.04 |
| Jackson을 사용하여 Json Processing Exception을 얻는 방법 (0) | 2023.03.04 |
| 'X-Frame-Options'를 'SAMEORIGIN'으로 설정했기 때문에 프레임 표시를 거부했습니다. (0) | 2023.02.27 |
| sqlplus: 공유 라이브러리를 로드하는 동안 오류가 발생했습니다. libsqlplus.so: 공유 개체 파일을 열 수 없습니다.해당 파일 또는 디렉터리가 없습니다. (0) | 2023.02.27 |