2013-07-03 10 views
12

Sono nuovo sia per javascript che per AngularJS e mi chiedo perché l'espressione all'interno delle virgolette non viene valutata?AngularJs: ng-show/ng-hide espressione non valutata

<span ng-show="{{remaining()}}!==0">sometext</span> 

è semplicemente stampato simili:

<span ng-show="2!==0">sometext</span> 

e ng-spettacolo non funziona indipendentemente dal contenuto. Il testo (e l'espressione stampata) viene visualizzato anche se l'espressione è avvolto in un eval,:

eval("{{remaining()}}!==0") 

ho ricorso a creare una funzione nel mio controllo a questa:

<span ng-show="renderOrNot()">sometext</span> 

che funziona, ma io preferirei non dover scrivere una funzione ogni volta che voglio fare un confronto

risposta

34

ci siamo quasi ...

Quando si utilizza {{}}, i valori ar e interpolato, cioè il markup è sostituito con il risultato dell'espressione. ngShow aspetta solo l'espressione, quindi basta utilizzare la funzione così com'è, e funzionerà:

<span ng-show="remaining() !== 0">sometext</span> 

In generale, si vorrà solo {{ }} quando deve essere visualizzata la tua espressione/contenuto.

16

Non è necessario utilizzarlo {{}} perché il valore è vincolato. Utilizzare ng-show come questo:

<span ng-show="remaining() !== 0">sometext</span> 
Problemi correlati