Próbuję pokazać / ukryć trochę HTML za pomocą funkcji ng-show
i ng-hide
dostarczonych przez AngularJS .
Zgodnie z dokumentacją odpowiednie użycie tych funkcji jest następujące:
ngHide - {wyrażenie} - Jeśli wyrażenie jest zgodne z prawdą, element jest odpowiednio pokazywany lub ukryty. ngShow - {wyrażenie} - Jeśli wyrażenie jest zgodne z prawdą, element jest odpowiednio pokazywany lub ukryty.
Działa to w następującym przypadku użycia:
<p ng-hide="true">I'm hidden</p>
<p ng-show="true">I'm shown</p>
Jednakże, jeśli powinniśmy użyć parametru z obiektu jako wyrażenia, wtedy ng-hide
i ng-show
otrzymują poprawną true
/ false
wartość, ale wartości nie są traktowane jako wartość logiczna, więc zawsze zwracaj false
:
Źródło
<p ng-hide="{{foo.bar}}">I could be shown, or I could be hidden</p>
<p ng-show="{{foo.bar}}">I could be shown, or I could be hidden</p>
Wynik
<p ng-hide="true">I should be hidden but I'm actually shown</p>
<p ng-show="true">I should be shown but I'm actually hidden</p>
To jest błąd lub nie robię tego poprawnie.
Nie mogę znaleźć żadnych względnych informacji na temat odwoływania się do parametrów obiektu jako wyrażeń, więc miałem nadzieję, że ktoś, kto lepiej rozumie AngularJS, może mi pomóc?
<p ng-show="foo.bar === 'test'">I could be shown, or I could be hidden</p>
Nie możesz używać,
{{}}
gdy używasz dyrektyw kątowych do wiązania z,ng-model
ale do wiązania atrybutów innych niż kątowe musisz użyć{{}}
.Na przykład:
źródło
Spróbuj opakować wyrażenie za pomocą:
źródło
foo.bar = true
powinno byćscope.foo.bar = true
, aby zmienić wartośćfoo.bar
$scope.$apply
Ponieważ
ng-show
jest to atrybut kątowy, myślę, że nie musimy umieszczać nawiasów kwiatowych oceny ({{}}
) ..W przypadku atrybutów takich jak
class
musimy obudować zmienne nawiasami kwiatowymi oceny ({{}}
).źródło
źródło
usuń {{}} nawiasy klamrowe wokół foo.bar, ponieważ wyrażeń kątowych nie można używać w dyrektywach kątowych.
Więcej informacji: https://docs.angularjs.org/api/ng/directive/ngShow
przykład
źródło
Jeśli chcesz pokazać / ukryć element w oparciu o status jednego {{wyrażenie}}, możesz użyć
ng-switch
:Akapit będzie wyświetlany, gdy foo.bar ma wartość true, a ukryty, gdy fałsz.
źródło