J'ai eu un cas d'utilisation par lequel je dois garder un élément HTML caché par défaut en utilisant CSS comme suit:
HTML:
<div class="item">
</div>
CSS:
.item {
display: none;
}
Cependant, je dois activer/désactiver la visibilité de l'élément à l'aide de ng-show après le chargement de la page, comme suit:
<div class="item" ng-show="show_element">
</div>
Cependant, même si $scope.show_element
est défini sur true, l'élément ne devient pas visible, c'est-à-dire que la propriété css annule la représentation de AngularJS. Existe-t-il un moyen de donner plus de priorité à ng-show?
Aussi, vous pouvez penser que je peux garder $scope.show_element
comme faux au début pour le cacher. Mais dans ce cas, j’aperçois très brièvement l’élément lors du chargement de la page, ce qui n’est pas bon du point de vue de l’expérience UX.
Une façon de le faire fonctionner dans votre cas serait d'utiliser ng-class
où dans le cas où l'élément devrait être visible, vous pouvez appliquer la classe à la propriété d'affichage correcte, c.-à-d. display: block
et si vous souffrez d'un démarrage lent, vous pouvez utiliser la documentation ng-cloak
ici https: //docs.angularjs.org/api/ng/directive/ngCloak
Une autre alternative simple
style="{{show_element?'display:block !important':'display:none !important'}}"
Si vous essayez simplement de masquer l'élément de manière à ne pas avoir de mémoire flash au chargement, au lieu d'utiliser la classe .item
définie sur display:none
, vous pouvez simplement définir une classe de .ng-hide
sur l'élément avec ng-show
activé.
La directive AngularJS ng-show
consiste à ajouter ou à supprimer une classe de .ng-hide
à l'élément DOM. La classe .ng-hide
applique la règle display: none !important;
<div class="ng-hide" ng-show="showElement">...</div>