Angular는 어떻게 알아?JS를 "갱신"하다
커스텀 디렉티브 범위 밖에서 발생하는 클릭 이벤트가 있기 때문에 "ng-click" 속성을 사용하는 대신 jQuery.click() 리스너를 사용하여 다음과 같이 스코프 내의 함수를 호출합니다.
$('html').click(function(e) {
scope.close();
);
close()는 다음과 같은 단순한 함수입니다.
scope.close = function() {
scope.isOpen = false;
}
제 견해로는 다음과 같이 "ng-show"가 isOpen으로 결합되어 있는 요소가 있습니다.
<div ng-show="isOpen">My Div</div>
디버깅 시 close()가 호출되고 isOpen이 false로 갱신되고 있지만 Angular가JS 보기가 업데이트되지 않습니다.Angular에게 수동으로 뷰를 업데이트하도록 지시할 수 있는 방법이 있습니까?아니면 이 문제를 해결하기 위해 제가 보지 못하는 더 많은 "각적" 접근법이 있을까요?
해결책은 전화하는 것이었다.
$scope.$apply();
내 jQuery 이벤트 콜백에서.
★★★★$apply
★★★★★★★★★★★★★★★★★?
TL;DR:$apply
는 Angular 월드 외부에서 변경된 내용을 적용하려는 경우 호출되어야 합니다.
@더스틴업데이트하기 위해 $apply가 정확히 어떤 역할을 하는지, 왜 동작하는지에 대해 설명합니다.
$apply()
Angular에서 식을 실행하는 데 사용됩니다.각도 외부에서 JSJS 프레임워크(예: 브라우저 DOM 이벤트, setTimeout, XHR 또는 서드파티 라이브러리).왜냐면 우린 Angular를 불러서JS 프레임워크 예외 처리, 감시 실행의 적절한 범위의 라이프 사이클을 수행해야 합니다.
Angular를 사용하면 모든 값을 바인딩 대상으로 사용할 수 있습니다.그런 다음 JavaScript 코드 턴이 끝나면 값이 변경되었는지 확인합니다. 변경되었는지 이인 '바인딩'이 .$scope.$digest()
직접 전화하는 일은 거의 없습니다1.$scope.$apply()
을 (이것을)라고 부르게 됩니다.$scope.$digest
를 참조해 주세요.
는 Angular 식및 Angular 합니다.$watch
그래서 컨텍스트 에서 모델을 에는 Angular를 호출해야 .$scope.$apply()
이러한 변경이 전파되지 않으면 Angular는 변경되었음을 알지 못하기 때문에 바인딩이2 업데이트되지 않습니다.
사용하다
$route.reload();
않고 $route
컨트롤러에 접속합니다.
다음 사항이 효과가 있었지만,
$scope.$apply();
더 모두의 했습니다..$on
★★★★★★★★★★★★★★★★★」.$broadcast
을 하다$.watch
.
하지만, 다음은 훨씬 적은 코드를 필요로 했고 마법처럼 작동했습니다.
$timeout(function() {});
업데이트 직후의 시간 초과를 스코프 변수에 추가하면 Angular가 허용됨JS는 업데이트가 있음을 깨닫고 스스로 적용합니다.
언급URL : https://stackoverflow.com/questions/12304728/how-can-i-tell-angularjs-to-refresh
'programing' 카테고리의 다른 글
Wordpress cron wp_schedule_single_event – 액션이 항상 작동하지 않음 (0) | 2023.03.02 |
---|---|
GSON을 사용하여 Android에서 동적 "키" 및 "값"을 가진 JSON 구문 분석 (0) | 2023.03.02 |
Angularjs의 $http 사용 시 응답 헤더 읽기 (0) | 2023.03.02 |
JSON은 공백으로 되어 있습니다.시간 필드 (0) | 2023.03.02 |
리액트 컴포넌트 동적 렌더링 (0) | 2023.03.02 |