Maison > Questions et réponses > le corps du texte
Comment Angular ng-hide prend-il effet immédiatement ?
Je dois définir $scope.isHide et ng-hide prendre effet avant d'exécuter le code suivant dans le contrôleur, par exemple dessiner un graphique basé sur la hauteur et la largeur du conteneur.
Dessiner un graphique sans le cacher sur le dom entraînera une erreur de hauteur du graphique.
Il peut être résolu en le cachant directement avec jquery. Comment le faire avec angulaire ?
html
<p class="container">
<p ng-hide='isHide' class="header"></p>
<p id="chart-container"></p>
</p>
controller
$scope.isHide = true; //Une fois qu'il doit prendre effet, c'est-à-dire masquer l'en-tête puis exécuter vers le bas
drawChartTo('chart-container');
En utilisant la disposition flexible, une fois l'en-tête masqué, le conteneur du graphique sera plus haut. drawChartTo dessine un graphique basé sur cette hauteur
Ce qui suit est une démonstration et une méthode de réparation de base pour prouver ce problème :
https://jsfiddle.net/q7t0d2q3/
Après une recherche, j'ai découvert que cela impliquait les principes de fonctionnement associés d'angularjs $digest. Pour résoudre ce problème, l'une consiste à attendre directement que le DOM soit rendu avant de dessiner le graphique, et l'autre consiste à laisser le graphique détecter le changement de hauteur du conteneur de graphique et à le redimensionner automatiquement. En dernière analyse, il s'agit d'un problème de synchronisation et d'asynchrone.
Informations associées :
http://tech.endeepak.com/blog...
https://blog.brunoscopelliti....
http://angular-tips.com/ blog/...
黄舟2017-05-15 17:14:30
La bonne façon ici n'est pas de modifier ng-hide
mais d'encapsuler votre méthode de dessin de graphiques dans une directive
PHPz2017-05-15 17:14:30
Attribuez d'abord la valeur, ng-hide = false, lorsque vous cliquez dessus ou lors d'un certain événement, ng-hide = true, et restituez le graphique en même temps
巴扎黑2017-05-15 17:14:30
Je pense que vous pouvez le résoudre en utilisant ng-if
ng-if
就可以解决
ng-if
是直接把这个东西从 DOM 中移除,而 ng-hide
ng-if
supprime directement cette chose du DOM, tandis que ng-hide
utilise simplement CSS pour masquer l'élément, et l'élément lui-même est toujours accessible via le nœud DOM trouvé 🎜给我你的怀抱2017-05-15 17:14:30
J'ai déjà rencontré un problème similaire. J'avais l'impression qu'après que ng-show/hide ait été défini sur true/false, cela ne prenait pas effet immédiatement. Essayez ceci.
$scope.isHide = true;
$timeout(function(){drawChartTo('chart-container')})
淡淡烟草味2017-05-15 17:14:30
<p ng-hide='isHide' class="header ng-hide"></p>
<p id="chart-container"></p>