2016-06-14 14 views
0

Ich habe eine Winkelanweisung, die eine jVectorMap rendert.AngularJS Verzögerung kompilieren Richtlinie, bis Element sichtbar ist

Wenn die Seite geladen wird, ist die Karte versteckt, aber der Benutzer auf einen Link klicken, können in einer die Karte zeigen fancyBox

Es ist völlig in Ordnung, in Chrome und IE funktioniert, aber Firefox bei mir schreit beim Rendern SVG auf einem verborgenen Element (i erhalten NS_ERROR_FAILURE) (siehe this question)

So auf der Grundlage dieses question, ich versuche meine Karte-Richtlinie zu bekommen, um nicht zu machen/kompilieren, bis es sichtbar ist, was ich denke, behebt das Problem in Feuerfuchs.

Gibt es eine Möglichkeit, dies zu tun, oder mache ich das falsch?

DANKE !!

aktualisieren

Mit ng-iftut Arbeit, aber in jVectorMap kann der Benutzer Regionen und Markierungen auf der Karte auswählen. Ich möchte, dass diese Auswahl auch nach dem Schließen der fancyBox erhalten bleibt. ng-if entfernt die Karte alle zusammen.

Richtlinie

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); 

      } 
     } 
    } 

Wie kann ich die Richtlinie in html verwenden:

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

Die mapModal div zeigt in einem fancybox-2 modal.

Antwort

3

Verwenden Sie ng-if anstelle von ng-Show. Dies erstellt die HTML-Elemente auf der Seite, wenn die Bedingung erfüllt ist, und entfernt sie, wenn dies nicht der Fall ist.

+0

Dank @Mator dieses _does_ Arbeit, jedoch in 'jvectormap' der Benutzer hat die Möglichkeit, Markierungen und Regionen auf der Karte auszuwählen. Wenn ich die fancybox schließe, möchte ich, dass die Kartenauswahl beim erneuten Öffnen der fancybox-Map erhalten bleibt. 'ng-if' wird die Karte vollständig entfernen, sobald die Fancybox geschlossen ist. Ändere meine Frage, um klarer zu sein – tkwargs

+0

Ja, das ist ein Nachteil der Verwendung von 'ng-if'. Der naheliegende (aber wahrscheinlich übertrieben schwierige) Ansatz wäre, die Auswahlen des Benutzers zu speichern und sie dann erneut anzuwenden, wenn die jvectormap neu erstellt wird. Als eine Alternative dazu könnten Sie die Karte durch eine benutzerdefinierte Direktive verstecken, die ihre Höhe auf 0 setzt oder den z-index verwendet, um sie hinter Ihre Seite zu setzen (das wäre sehr hacky). – Mator

+0

Ich nahm Ihren Ansatz und alles funktioniert gut. Vielen Dank! – tkwargs