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-if
tut 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.
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
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
Ich nahm Ihren Ansatz und alles funktioniert gut. Vielen Dank! – tkwargs