Rufen Sie die JavaScript-Funktion außerhalb des Bereichs bei ng-click auf

8

Ich habe eine Javascript-Bibliothek mit einer Reihe nützlicher Funktionen, die ich auf meiner Website nutze, die verschiedene Dinge tun.

Ich weiß, dass ich von einem ng-Klick aus nicht auf diese Funktionen zugreifen kann, weil die Funktionen außerhalb des Bereichs liegen.

Gibt es eine Möglichkeit, auf sie zuzugreifen, ohne eine Bereichsfunktion deklarieren zu müssen, die nur einen Aufruf an die Funktion in der Bibliothek macht?

Hier ist ein Spiel mit einem Beispiel. Ich würde gerne wissen, ob es einen Weg gibt, den zweiten Link zum Laufen zu bringen. Das liegt einfach daran, dass mir die Idee, eine Funktion zu definieren, die einfach eine andere Funktion aufruft, nicht gefällt. z.B.

HTML:

%Vor%

Controller JS:

%Vor%

Externe Bibliothek JS:

%Vor%

& lt; ------- UPDATE ------- & gt;

Danke für die kreativen Antworten Jungs! Vinay Ks Antwort ist die einfachste und offensichtlichste, aber ich entschied mich für Ron E's Antwort. Der Grund ist, dass ich bereits ein globales Modul mit einer Sammlung von wiederverwendbaren Direktiven habe, das es einfacher und sauberer in meinem HTML implementieren würde. Auch weil ich manchmal mehr als eine Funktion aus der Bibliothek verwende und sie dann im onclick ketten müsste:

%Vor%

Wo eine Direktive nur sauberer ist und ich so viele Funktionen aufrufen kann wie ich möchte, während ich auch andere Sachen mache.

    
WJK 11.03.2015, 19:32
quelle

4 Antworten

7

Sie könnten eine Direktive verwenden, hier ein Beispiel:

%Vor%

Dadurch können Sie Ihre verschiedenen Code-Chunks / Funktionen im gesamten Projekt einfach wiederverwenden.

    
Ron E 11.03.2015, 19:48
quelle
15

ng-click Ausdruck (oder jeder andere Ausdruck in eckigen Klammern) wird im Zusammenhang mit dem Geltungsbereich ausgewertet.

Da doSomethingElse nicht für den Bereich definiert ist, funktioniert es nicht.

Verwenden Sie onclick anstelle von ng-click

%Vor%     
Vinay K 11.03.2015 19:35
quelle
3

Hi Wenn Sie Javascript Funktion definiert haben, können Sie alte js Funktionen und Angular js zusammen verwenden

Beispiel:

%Vor%

Danke fürs Lesen

    
Ferhat KOÇER 12.01.2016 10:04
quelle
0

Wenn Ihre Bibliothek global verfügbar ist (z. B. für das Fensterobjekt), könnten Sie eine Methode in Ihrem rootScope schreiben, die den Funktionsnamen als Parameter akzeptiert. Garantiert dies ist nicht die orthodoxe Art, Dinge in Angular zu tun, aber es wird die Notwendigkeit beseitigen, all diese zusätzlichen Methoden in all Ihren Bereichen hinzuzufügen. Hier ist ein grobes Beispiel:

In Ihrer app.run-Methode könnten Sie etwas hinzufügen:

%Vor%

Dann könnten Sie aus Ihrer Sicht so etwas tun:

%Vor%

Sie könnten sogar noch schicker werden und eine beliebige Anzahl von Parametern an Ihre Funktion übergeben, ebenso wie den Funktionsnamen Punkte für Methoden enthalten, die in anderen Objekten verschachtelt sind, und diese aufteilen. Dies sollte dir zumindest den Einstieg erleichtern.

    
Benjamin Oman 11.03.2015 19:38
quelle

Tags und Links