Warum beschwert sich AngularJS über ein unerwartetes Token in einem Ausdruck, wenn ich versuche, eine Zeichenfolge zu verwenden?

8

Ich habe das folgende Attribut auf einem div: ng-show="state.name === 'index'" . Ich habe auch versucht, ng-show='state.name === "index" , aber ich bekomme immer den folgenden Fehler:

  

Syntaxfehler: Token ' "index" ' ist ein unerwartetes Token in Spalte 16 des Ausdrucks [state.name === "index"] ab ["index"] .

Warum?

    
bigblind 21.10.2012, 14:46
quelle

3 Antworten

3

Ich habe das Problem gefunden. Anstelle von "state.name==='index'" hätte ich "state.name=='index'" geschrieben. pkoziowski.opensource hatte recht, da Sie keine bedingten Anweisungen verwenden können, aber was sie damit meinen, ist, dass Sie keine if-Anweisungen oder irgendwelche Kontrollflussanweisungen verwenden können, so dass Sie dies nicht tun könnten:

%Vor%     
bigblind 21.10.2012, 15:16
quelle
16

ng-show benötigt eine AngularJS-Anweisung. Diese Art von Anweisung hat nur einen Operator == , aber dieser Operator verhält sich wie === . Es ist ein bisschen verwirrend, aber praktisch, dass du dich nicht mit seltsamen Artzwängen in den Fuß schießen kannst.

    
btford 22.10.2012 05:28
quelle
1

Eine neue Antwort ist jetzt für diese Frage möglich: Sie verwenden möglicherweise eine alte Version von AngularJS , weil neuere Versionen dies nicht haben.

Sehen Sie hier eine Wiederholung des Problems von OP mit der neuesten Version zum Zeitpunkt der Anfrage (1.1.0):

%Vor% %Vor%

Und sehen Sie hier den gleichen Code, aber mit Version 1.5.6 , der neuesten Version zum Zeitpunkt der Erstellung dieser Antwort:

%Vor% %Vor%

Vermutlich wurde dies 2013, Version 1.1.2, behoben, weil das Änderungsprotokoll ist > Erwähnungen:

  
  • $ parse: erlaubt strikte Gleichheit in Winkelausdrücken (a179a9a9, # 908)
  •   

Fußnote: Ich habe das Obige als Antwort auf die Frage formuliert. Wenn Sie meine Antwort aufheben, bedeutet das leider wahrscheinlich, dass Sie mit einer Suchanfrage wie ich in diesem Thread gelandet sind, nur um herauszufinden, dass der "unerwartete Token" -Fehler, den Sie bekommen, nicht durch das Problem von OP verursacht wurde ...

    
Jeroen 13.06.2016 09:05
quelle