2014-06-30 5 views
0

Comment forcer réengendrer ma directiveforce désactiver le cache de directive ou recharger AngularJS directive

Modèle

<div ng-if="showDirective"> 
    <my-directive attr="value"></my-directive> 
</div> 
<button ng-click="toggleDirective()">Toggle</button> 

Contrôleur

$scope.showDirective = true 

    $scope.toggleDirective = function() { 
    $scope.showDirective = !$scope.showDirective; 
    } 

J'ai une demande ajax dans la directive qui va chercher les données et la boucle si ng-repeat.

Charger la charge pour la première fois lors du chargement de la page. Lorsque je clique sur le bouton bascule la première fois qu'il cache la directive, lorsque je clique sur la bascule à nouveau charge du cache ou rend la dom précédente. Comment pourquoi voudriez-vous faire ce que je force réengendrer la directive chaque fois que son spectacle ..

Répondre

0

recompiler le balisage est la seule chance de re-rendre ....

CEPENDANT, cela? Peut-être qu'il suffirait de mettre à jour votre liste dans ng-repeat? AngularJS verra les changements et rendra la liste elle-même, pas besoin de ré-édition manuelle.

+0

Mon cas d'utilisation est un peu complexe, La directive est une directive enfant qui sera dans une directive parente, sa récursivité !! J'ai besoin de mettre à jour la directive enfant lorsque la directive parent immédiate est modifiée. Ensuite, la partie délicate est à la fois avec des étendues isolées. – Siddhartha

+0

Puis recompilez-le. C'est cher et peut-être pas la meilleure solution, mais pourrait fonctionner pour vous. Je ne recommanderais pas si .. Je suis sûr que vous pourriez trouver une solution pour que cela fonctionne .. Recompilation est un tour de passe-passe dans ce cas. – domakas