2016-06-14 2 views
0

나는 각도 배열을 사용하여 jVectorMap을 렌더링합니다.요소가 표시 될 때까지 지시문을 컴파일하는 AngularJS 지연

페이지가 처음로드지도가 숨겨져 있지만 링크를 클릭 할 수있는 사용자 그것은 크롬과 IE에서 완벽하게 정상적으로 작동하고 fancyBox

의지도를 보여주고 있지만, 렌더링 할 때 파이어 폭스는 나를 으악 때 숨겨진 요소에 SVG는 (내가 NS_ERROR_FAILURE를 얻을)

그래서 question에 따라

, 내가있는 문제를 해결할 생각이 볼 때까지 컴파일/렌더링하지 내지도 지침을 얻으려고 (this question 참조) Firefox.

이 작업을 수행 할 수있는 방법이 있습니까, 아니면 잘못된 방식으로 진행할 예정입니까?

고맙습니다! ng-if를 사용

업데이트

작업을 수행하지만 jVectorMap에 사용자가지도에 지역과 마커를 선택할 수 있습니다. fancyBox가 닫힌 후에도 이러한 선택 항목이 지속되도록하고 싶습니다. ng-if은지도를 모두 삭제합니다.

지침 내가 HTML에 지시어를 사용하는 방법

angular.module('myApp') 
    .directive("selectionMap", electionMap); 

    function selectionMap(){ 
     return { 
      restrict: "E", 
      link : function(scope,element){ 
       jVectorMapOptions = { 
        // set jvm options (http://jvectormap.com/documentation/javascript-api/jvm-map/) 
        option : 'something', 
        option2: 'something else' 
        // and so on 
       }; 
      element.vectorMap(jVectorMapOptions); 

      } 
     } 
    } 

하십시오 fancybox-2 모달 내부

<div id="mapModal" ng-show="mapSelected"> 
    <selection-map id="myMap"></selection-map> 
</div> 

mapModal DIV 보여줍니다.

답변

3

ng-show 대신 ng-if을 사용해보십시오. 이렇게하면 조건이 충족 될 때 페이지에 HTML 요소가 만들어지고 그렇지 않은 경우 HTML 요소가 제거됩니다.

+0

감사합니다 @Mator this _does_ 그러나,'jvectormap'에서 사용자는지도상의 마커와 영역을 선택할 수 있습니다. fancybox를 닫을 때, fancybox 맵을 다시 열 때 맵 선택이 지속되도록하고 싶습니다. 'ng-if'는 fancybox가 닫히면 맵을 완전히 제거합니다. 더 명확하게 내 질문을 수정합니다. – tkwargs

+0

예, 그것은 'ng-if'를 사용하는 단점입니다. 명백한 (그러나 거의 불가능할 수도있는) 접근법은 사용자의 선택을 저장 한 다음 jvectormap을 다시 만들 때 다시 적용하는 것입니다. 대신에 높이를 0으로 설정하거나 Z- 색인을 사용하여 페이지 뒤쪽에 배치하는 일부 사용자 지정 지시어로지도를 숨길 수 있습니다 (이는 매우 해킹 될 수 있음). – Mator

+0

나는 당신의 접근 방식을 취했고 모두 잘 작동합니다. 감사! – tkwargs