2016-09-12 1 views
2

Ich brauche für meine HTML-Seite zu definieren, die nur eine Javascript externe Datei laden, wenn die Variable $scope.jsallowed auf true gesetzt ist, also habe ich versucht, diesen Code: (Meine Seite auf AngularJS basiert) in html:Fügen Sie Javascript externe Datei, wenn in AngularJS erlaubt

<script src="assets/js/slider.min.js" data-ng-if="jsallowed"></script> 

in JS:

$scope.jsallowed = false; 

(Beachten Sie, dass ich die Anwendung gesetzt und Controller und ... aber ich eingeschlossen nur Codes, die Sie hier benötigen.) aber das Problem ist, mein Javascript f ile lädt noch. Während es nicht sollte. Wie kann ich meinen Code verbessern, um zu verhindern, dass er geladen wird, bis ich die Variable jsallowed auf true setze?

+0

http://stackoverflow.com/a/27306744/1132354 – nikhil

Antwort

0

Leider wird data-ng-if = "jsallowed" nicht den gewünschten Trick machen. Was Sie tun können, stattdessen das Skript wird geladen asynchron direkt in Ihrem JavaScript mit so etwas wie diese Datei:

<script> 
var resource = document.createElement('script'); 
resource.src = "assets/js/slider.min.js"; 
var script = document.getElementsByTagName('script')[0]; 
script.parentNode.insertBefore(resource, script); 
</script> 
+0

Wie über diesen Code in Richtlinie Einwickeln, Irgendwas Magisches tun? Warum downvoted, nur neugierig, weil nicht eckige Art vorgeschlagen? Können wir hier den '$ Injektor 'spielen, um dynamisch etwas hinzuzufügen? – user3198882

+0

@ user3198882, gibt es keine eckige Art, diesen Trick zu machen. Ich bin mir nicht sicher, warum Sie meinen Vorschlag abgelehnt haben, aber ich kann mir versichern, dass das funktioniert und es ist durchaus üblich, diese Syntax zu sehen. Auch das schlägt Google beim Importieren seiner Analytics-Bibliothek vor. Natürlich können Sie das in eine Angular-Direktive einfügen, ich habe nur den JavaScript-Code hervorgehoben, den Sie ausführen müssen, um den Trick auszuführen. – andreasonny83

+0

Es war nicht ich, wer downvoted, ich fragte nur, warum jemand es gemacht hat, immer noch interessant für mich :) – user3198882

Verwandte Themen