2013-10-28 4 views
6

Es scheint, dass Angularjs ng-Show-Direktive die 'N' und 'NO' als Falsy-Werte interpretiert.Angularjs ng-show Direktive interpretiert die 'N' und 'NO' als Falsy-Werte

In meinem Winkel Anwendung, ich bin die Anzeige zu einem bestimmten Land bezogenen Daten der folgenden <div ng-show="countryCode">some code</div> mit Ich war überrascht, als ich herausgefunden, dass die Daten nach Norwegen bezogen sind nicht dargestellt. Und das liegt daran, dass die Landesvorwahl von Norwegen "NEIN" ist, was als falscher Wert gilt.

Ich weiß nicht, ob dies eine Design-Wahl ist. aber wenn ja, wie Sie mit dieser Art von Fragen befassen

können Sie reproduzieren diese here

Danke im Voraus

+1

Eigentlich ist es eine Design-Wahl, Sie die verantwortliche Funktion hier sehen können: https://github.com/angular/angular.js/blob/fca7bcaf43af3a4501ea0727d48f606c58d76bcd/src/Angular.js#L961 – DotDotDot

Antwort

3

Verwenden ng-show="!!countryCode", um das Verhalten zu zwingen Sie wollen.


Aus dem Lesen des Codes scheint das Verhalten von Entwurf zu sein. Allerdings sagt die Dokumentation:

, wenn der Ausdruck truthy ist, dann wird das Element oder versteckt bzw.

gezeigt

, die nur wahr, wenn die Winkel Entwickler truthy verwenden, etwas anderes zu seiner Javascript bedeuten Bedeutung.

+1

Knall, Knall. Ich liebe JS. :) –

+1

Könnte auch 'ng-hide ="! CountryCode "' verwenden. –

+0

'!!' ist ein akzeptiertes Idiom, um einen booleschen Wert zu erhalten, der die Wahrheit eines Javascript-Wertes darstellt. Gute alte dynamisch typisierte Sprachen. –