2013-08-11 2 views

risposta

2

Il criterio non sembra corretto, ng-show deve prendere un tipo boolean. Prova questo

<span ng-show="variable.one.length > 0">:</span> 
7

Il problema è che angolare considera i valori 'f', 'falso', '0', 'n', e 'non' essere falsy! C'è an open bug per questo comportamento. Puoi risolvere il problema con l'approccio di sza, oppure puoi anche farlo:

<span ng-show="!!variable.one">:</span> 
+1

Più di una caratteristica di un bug però. Per questo motivo consiglierei sempre l'uso di controlli rigorosi per le condizioni. – finishingmove

+0

Sì, è solo capire che è così che javascript funziona in modo nativo. Se si avvolge il contenuto di ng-show in un'istruzione if, allora risulterebbe nella stessa cosa. Ecco perché è necessario controllare come sza. – Noogen

+1

Questa è la cosa più stupida che ho visto in un framework popolare. Prima di tutto, "f", "no" e "n" non hanno alcun dubbio sull'essere falsi. Anche lì stringhe. JavaScript non funziona in questo modo in modo nativo, oppure "!!" non funzionerebbe Nel JavaScript nativo una stringa con qualsiasi contenuto è un valore di verità. Quello che succede in realtà è che se l'angolare rileva che il valore di un'espressione è una stringa, lo evaluta di nuovo. Questo è inutile e causa più problemi della sua parola. Le cose che sono semplicemente "cool" non hanno alcun posto in un framework e Angular ne è pieno. –