Estoy tratando de mostrar / ocultar algo de HTML usando las funciones ng-show
y ng-hide
proporcionadas por AngularJS .
Según la documentación, el uso respectivo para estas funciones es el siguiente:
ngHide - {expresión} - Si la expresión es verdadera, el elemento se muestra u oculta respectivamente. ngShow - {expresión} - Si la expresión es verdadera, entonces el elemento se muestra u oculta respectivamente.
Esto funciona para el siguiente caso de uso:
<p ng-hide="true">I'm hidden</p>
<p ng-show="true">I'm shown</p>
Sin embargo, debemos usar un parámetro de un objeto como la expresión a continuación, el ng-hide
y ng-show
se les da la correcta true
/ false
valor pero los valores no son tratados como un booleano por lo que siempre volver false
:
Fuente
<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>
Esto es un error o no lo estoy haciendo correctamente.
No puedo encontrar ninguna información relativa sobre la referencia de parámetros de objetos como expresiones, así que esperaba que alguien con una mejor comprensión de AngularJS pudiera ayudarme.
<p ng-show="foo.bar === 'test'">I could be shown, or I could be hidden</p>
No se puede usar
{{}}
cuando se usan directivas angulares para enlazar con,ng-model
pero para enlazar atributos no angulares que tendría que usar{{}}
.P.ej:
fuente
Intenta envolver la expresión con:
fuente
foo.bar = true
debería serscope.foo.bar = true
, para cambiar el valor defoo.bar
$scope.$apply
Como
ng-show
creo que es un atributo angular, no necesitamos poner los corchetes de evaluación de flores ({{}}
).Para atributos como
class
necesitamos encapsular las variables con corchetes de evaluación de flores ({{}}
).fuente
fuente
elimine {{}} llaves alrededor de foo.bar porque las expresiones angulares no se pueden usar en directivas angulares.
Para más información: https://docs.angularjs.org/api/ng/directive/ngShow
ejemplo
fuente
Si desea mostrar / ocultar un elemento basado en el estado de una {{expresión}} puede usar
ng-switch
:El párrafo se mostrará cuando foo.bar sea verdadero, oculto cuando sea falso.
fuente