2013-07-03 13 views
12

Jestem nowy zarówno dla javascript, jak i AngularJS, i zastanawiam się, dlaczego wyrażenie wewnątrz cudzysłowu nie jest oceniane?Wyrażenie AngularJs: ng-show/ng-hide nie zostało ocenione

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

to jest po prostu wydrukowane w następujący sposób:

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

i ng-show nie działa niezależnie od treści. Tekst (a wydrukowane wyrażenie) pokazano nawet jeśli wyrażenie jest owinięty w eval,:

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

I uciekają się do tworzenia funkcji w moim kontroler do tego:

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

który pracuje, ale wolałbym nie mieć napisać funkcję każdym razem kiedy chcesz dokonać porównania

Odpowiedz

34

prawie tam ...

Podczas korzystania {{}} wartości ar e interpolowany, tj. znacznik jest zastępowany wynikiem wyrażenia. ngShow oczekuje jedynie wyrazem, więc wystarczy użyć funkcji, jak jest, i to będzie działać:

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

Generalnie, będziesz tylko chcesz {{ }} kiedy powinien zostać wyświetlony wyraz/treść.

16

Nie wolno jej używać {{}}, ponieważ Twoja wartość to powiązanie. Użyj ng-show w ten sposób:

<span ng-show="remaining() !== 0">sometext</span> 
Powiązane problemy