Nous essayons de déterminer s'il existe un moyen de supprimer / remplacer / remplacer temporairement un ensemble de directives tout en mode 'Aperçu'.
Nous avons essayé de supprimer le (s) module (s) que les directives sont contenues, par exemple: p> mais les directives sont toujours actives. P> Quelqu'un peut-il aider? P> p>
3 Réponses :
Autre alternative, envisagez de mettre un mode de prévisualisation dans chacune des directives. Passez un attribut pour indiquer si l'état actuel est un aperçu ou «Live» et conditionner le modèle de directive avec NG-Switch. P>
Les goûts varient, mais cela ressemble à une approche plus lisible pour moi que de redéfinir les directives à la volée. P>
Malheureusement, nous avons beaucoup de directives et nous répéterons la logique du commutateur dans tous. Cela se sentirait plus propre de traiter tout cela au même endroit.
Hmm. Compris. Vos alternatives (mode de prévisualisation) seront statiques? Cela pourrait-il être accompli en jouant à des jeux avec l'emplacement des modèles de directive? (Tels que en utilisant templateurl dans la définition de la directive et en faisant le chemin dynamique)
Je peux voir comment cette solution pourrait fonctionner, mais cela ressemble à beaucoup plus d'efforts que de simples stabilisations, puis de les ramener ensuite.
Oui. Je ne sais pas comment accomplir l'autre, cependant, alors lancez des suggestions au cas où vous avez besoin d'une alternative. Pouvez-vous utiliser angular.Injector () pour modifier la liste d'injection dans le milieu du flux? Je n'ai jamais essayé.
Angularjs interne crée usines em> des directives em>, en ajoutant un suffixe au nom de la directive. Donc, vous pouvez désactiver les directives en remplaçant les usines avec Assurez-vous que ceci est le dernier code exécuté. P> P> noop code> usines.
Toutefois, cela désactive la directive ngpaste code> dans son ensemble, pas seulement la directive à l'intérieur
MyModule code> Module. Par exemple, supposé que je définis aussi une directive code> ngpaste code> dans
mod2 code>. Ensuite, le code ci-dessus désactivera non seulement
ngpaste code> directive dans
myModule code>, mais aussi la directive
ngpaste code> dans
mod2 code>. Comment puis-je désactiver uniquement la directive
ngpaste code> dans un module (et conserver également le reste des fonctionnalités) et conserver celui-ci dans un autre? BTW, la directive que je veux désactiver est dans une grande bibliothèque 3ème partie, dont je ne veux pas maintenir une version modifiée.
dans Cette réponse Il est décrit comment supprimer une directive intégrée angulaire. Sur la base de cette idée, ma suggestion est de faire cela:
angular.module('myModule', []) // ... registering some stuff on the module .config(['$provide', function ($provide) { // Remove the progress directive of 'ui.bootstrap'. // Otherwise we cannot use native progress bar. $provide.decorator('{DIRECTIVE_NAME}Directive', ['$delegate', function ($delegate) { $delegate.pop(); return $delegate; }]); }]);