So verwenden Sie JavaScript in {{}} AngularJS

8

Ich weiß, dass {{}} einen Ausdruck interpretieren kann, aber wenn ich versuche, JavaScript zu verwenden, funktioniert es nicht wie {{"a/b/c/d/".split('/').filter(function(n){return n}).reverse()[0]}}

Ich muss das verwenden, um den Slug-Wert von der URL zu bekommen.

Bitte schlagen Sie vor, wie dies mit angularjs zu erreichen ist, die Quelle der URL stammt von externem Feed, daher habe ich hier eine sehr begrenzte Kontrolle.

    
whizcreed 19.12.2013, 10:36
quelle

3 Antworten

7

Full JS wird nicht unterstützt, und selbst wenn es so wäre, wäre es eine schlechte Übung.

Ich empfehle Ihnen, dies zumindest auf eine Scope-Funktion in Ihrem Controller zu setzen.
Noch besser wäre es, es in einen Dienst oder in einen Filter zu stellen. Wenn Sie es später für andere Zwecke wiederverwenden möchten, können Sie:

%Vor%

Und dann in Ihrer Vorlage:

%Vor%

Es ist auch möglich, die Winkeldokumente über Ausdrücke zu lesen.

    
gustavohenke 19.12.2013, 10:39
quelle
5

Sie sollten Templating nicht so verwenden - Angular unterstützt das nicht. Erstellen Sie entweder eine Funktion im Bereich:

%Vor%

Oder erstellen Sie einen Filter, der das leistet, was Sie erreichen möchten:

%Vor%

Und benutze es so:

%Vor%     
Jamie 19.12.2013 10:42
quelle
2

{{}} sagen Sie, dass aus Ihrer Sicht ein Ausdruck interpoliert ist. Winkelausdrücke unterstützen nicht das gesamte JavaScript. Für die Dokumentation klicken Sie hier .

Wenn Sie ganz JavaScript benötigen. Es ist besser, die Logik in eine Controller-Funktion zu integrieren.

Auszug aus der Dokumentation:

  

Es könnte verlockend sein, an Ausdrücke mit Winkelbildern zu denken   JavaScript-Ausdrücke, aber das ist nicht ganz richtig, da   Angular verwendet kein JavaScript eval () zum Auswerten von Ausdrücken. Sie   kann angular Ausdrücke als JavaScript Ausdrücke mit betrachten   folgende Unterschiede:

     

Attributbewertung: Bewertung aller Eigenschaften ist gegen die   scope macht die Auswertung, anders als in JavaScript, wo die Ausdrücke   werden gegen das globale Fenster ausgewertet.

     

Vergeben: Ausdruck Bewertung ist verzeihend zu undefiniert und null,   anders als in JavaScript, wo versucht wird, undefinierte Eigenschaften zu bewerten   kann ReferenceError oder TypeError generieren.

     

Keine Kontrollflussanweisungen: Sie können keine der folgenden Aktionen ausführen   eckiger Ausdruck: Bedingungen, Schleifen oder Werfen.

    
Davin Tryon 19.12.2013 10:40
quelle

Tags und Links