2013-10-28 6 views
6

Sembra che la direttiva Angularjs ng-show interpreti i valori "N" e "NO" come valori falsi.La direttiva angularjs ng-show interpreta i valori "N" e "NO" come valori falsi

Nella mia applicazione angolare, sto visualizzazione dei dati relativi ad un paese specifico utilizzando il seguente <div ng-show="countryCode">some code</div> Sono rimasto sorpreso quando ho capito che i dati relativi alla Norvegia non vengono mostrati. E questo perché il codice paese della Norvegia è "NO" che è considerato un valore falsato !!

Non so se questa è una scelta di design. ma se sì come si tratta con questo tipo di problemi

È possibile riprodurre questo here

Grazie in anticipo

+1

In realtà è una scelta di design, è possibile visualizzare la funzione responsabile qui: https://github.com/angular/angular.js/blob/fca7bcaf43af3a4501ea0727d48f606c58d76bcd/src/Angular.js#L961 – DotDotDot

risposta

3

Usa ng-show="!!countryCode" per forzare il comportamento desiderato.


Dalla lettura del codice, il comportamento sembra essere di progettazione. Tuttavia, la documentazione dice:

se l'espressione è truthy allora l'elemento viene visualizzato o nascosto rispettivamente

che è vero solo se gli sviluppatori angolari utilizzano truthy per significare qualcosa di diverso per la sua javascript senso.

+1

bang, bang. Adoro JS. :) –

+1

Potrebbe anche usare 'ng-hide ="! CountryCode "'. –

+0

'!!' è un linguaggio accettato per ottenere un valore booleano che rappresenta la veridicità di un valore javascript. Buone vecchie lingue dinamicamente tipizzate. –