1

ng-show를 사용하여 $ scope 변수를 변경하여 요소에 js 이벤트를 바인딩해야합니다.

범위를 변경 한 후 JS 스크립트를 실행했지만 Js가 빠져있는 각도보다 빠르면 ng-show에서 아직 표시되지 않은 div가 발견되었습니다.

이 문제의 일부 코드 샘플은 다음과 같습니다. 나는 이런 종류의 문제에 대한 발견이 솔루션은의 setTimeout에 JS 코드를하는 것입니다하지만 난 깨끗한 솔루션이 필요합니다

$scope.start = function(){ 
    $scope.showMap=true; 
    /* 
    setTimeout(function(){ 
    jsFunc(); 
    },1000); 
    */ 
    //Use $timeout 
    $timeout(jsFunc); 
} 

$timeout 서비스가 통합되어 있습니다 : https://plnkr.co/edit/iYDs552yCyd3R7ivgD84?p=preview

$scope.start = function(){ 
    $scope.showMap=true; 

    setTimeout(function(){ 
    jsFunc(); 
    },1000); 
} 
+0

범위 변수에 시계를 추가해야합니다. https://www.sitepoint.com/mastering-watch-angularjs/ –

+0

plunker에서 볼 수 있듯이 말했지만 편집하지 못했습니다. 문제는 시계 기능이 angularjs가 만든 dom의 변경보다 조금 더 일찍 호출 됨 – SWahi

답변

1

$timeout 서비스를 사용을 AngularJS 다이제스트주기와 함께.

Leaflet API는 AngularJS 프레임 워크 외부에 있으므로 브라우저가 DOM을 렌더링하고 전단 코드 API 코드를 실행하려면 $ 시간 초과가 필요합니다.

자세한 내용은 AngularJS $timeout Service API Reference을 참조하십시오.

+0

또 다른 대안은 [Angular-UI ui-leaflet] (https://github.com/angular-ui)와 같은 지시어를 사용하는 것입니다./ui - 전단지). – georgeawg

+0

예전에 해봤지만 특정 요구에 특별히 제한되어 있습니다. – SWahi