J'essaie d'afficher / masquer du HTML en utilisant les fonctions ng-show
et ng-hide
fournies par AngularJS .
Selon la documentation, l'utilisation respective de ces fonctions est la suivante:
ngHide - {expression} - Si l'expression est véridique, alors l'élément est affiché ou masqué respectivement. ngShow - {expression} - Si l'expression est véridique, alors l'élément est affiché ou masqué respectivement.
Cela fonctionne pour le cas d'utilisation suivant:
<p ng-hide="true">I'm hidden</p>
<p ng-show="true">I'm shown</p>
Cependant, si nous utilisons un paramètre d'un objet comme expression, alors la ng-hide
et ng-show
reçoivent la valeur true
/ correcte false
mais les valeurs ne sont pas traitées comme un booléen, donc retournez toujours false
:
La source
<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>
Résultat
<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>
C'est soit un bug, soit je ne le fais pas correctement.
Je ne trouve aucune information relative sur le référencement des paramètres d'objet en tant qu'expressions, alors j'espérais que quiconque ayant une meilleure compréhension d'AngularJS pourrait m'aider?
<p ng-show="foo.bar === 'test'">I could be shown, or I could be hidden</p>
Vous ne pouvez pas utiliser
{{}}
lorsque vous utilisez des directives angulaires pour la liaison avecng-model
mais pour la liaison d'attributs non angulaires que vous devez utiliser{{}}
.Par exemple:
la source
Essayez d'habiller l'expression avec:
la source
foo.bar = true
devrait êtrescope.foo.bar = true
, pour changer la valeur defoo.bar
$scope.$apply
Puisqu'il
ng-show
s'agit d'un attribut angulaire je pense, nous n'avons pas besoin de mettre les parenthèses d'évaluation des fleurs ({{}}
) ..Pour des attributs tels que
class
nous devons encapsuler les variables avec des crochets de fleur d'évaluation ({{}}
).la source
la source
supprimez les accolades {{}} autour de foo.bar car les expressions angulaires ne peuvent pas être utilisées dans les directives angulaires.
Pour en savoir plus: https://docs.angularjs.org/api/ng/directive/ngShow
exemple
la source
Si vous souhaitez afficher / masquer un élément en fonction du statut d'un {{expression}}, vous pouvez utiliser
ng-switch
:Le paragraphe sera affiché lorsque foo.bar est vrai, masqué lorsqu'il est faux.
la source