Estou tentando mostrar / ocultar algum HTML usando as funções ng-show
e ng-hide
fornecidas pelo AngularJS .
De acordo com a documentação, o uso respectivo para essas funções é o seguinte:
ngHide - {expression} - Se a expressão for verdadeira, o elemento será mostrado ou oculto, respectivamente. ngShow - {expression} - Se a expressão for verdadeira, o elemento será mostrado ou oculto, respectivamente.
Isso funciona para o seguinte caso de usuário:
<p ng-hide="true">I'm hidden</p>
<p ng-show="true">I'm shown</p>
No entanto, devemos usar um parâmetro de um objeto como a expressão, em seguida, o ng-hide
e ng-show
é dada a correta true
/ false
valor, mas os valores não são tratados como um booleano por isso sempre retornar false
:
Fonte
<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>
Resultado
<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>
Isso é um bug ou não estou fazendo isso corretamente.
Não consigo encontrar nenhuma informação relativa sobre como referenciar parâmetros de objetos como expressões, então esperava que alguém com uma melhor compreensão do AngularJS pudesse me ajudar?
<p ng-show="foo.bar === 'test'">I could be shown, or I could be hidden</p>
Você não pode usar
{{}}
ao usar diretivas angulares para vincular,ng-model
mas para vincular atributos não angulares, você precisaria usar{{}}
..Por exemplo:
fonte
Tente agrupar a expressão com:
fonte
foo.bar = true
deve serscope.foo.bar = true
, para alterar o valor defoo.bar
$scope.$apply
Como
ng-show
é um atributo angular, eu acho, não precisamos colocar os colchetes de avaliação ({{}}
) ..Para atributos como
class
precisamos encapsular as variáveis com colchetes de avaliação ({{}}
).fonte
fonte
remova {{}} chaves ao redor do foo.bar porque expressões angulares não podem ser usadas em diretivas angulares.
Para mais: https://docs.angularjs.org/api/ng/directive/ngShow
exemplo
fonte
Se você deseja mostrar / ocultar um elemento com base no status de uma {{expression}}, pode usar
ng-switch
:O parágrafo será exibido quando foo.bar for verdadeiro, oculto quando falso.
fonte