Utiliser $ comstack sur un modèle externe (templateURL) dans une directive angular

J’ai une directive angular récursive qui utilise une variable de modèle et qui est compilée dans la fonction de link .

Le problème est que mon template est devenu très long et hors de contrôle et que je veux l’externaliser dans un fichier HTML externe (cela faciliterait aussi l’auto-indentation par exemple).

Comment pouvez-vous charger un modèle externe dans une directive pouvant être utilisée dans la $comstack ?

J’ai vu templateURL , mais cela ne me permet pas de nommer la variable et de la passer à la fonction $comstack .

 var template = "

My template

"+ ""; return { scope: { ... }, ... link: function(scope, element){ element.html(template); $comstack(element.contents())(scope); } }

et

Vous pouvez utiliser le service $templateRequest pour obtenir le modèle. Ceci est un service pratique qui met également le modèle en cache dans $templateCache , de sorte que seule une demande à template.html soit effectuée.

À titre d’illustration (et sans entrer dans la question des directives récursives), ceci est utilisé comme ceci:

 link: function(scope, element){ $templateRequest("template.html").then(function(html){ var template = angular.element(html); element.append(template); $comstack(template)(scope); }); }; 

plunker (consultez l’onglet réseau pour voir une seule requête réseau)

Je préfère utiliser $ http pour charger un template si sa taille est plus grande: –

 $http.get('mytemp.html').then(function(response) { element.html(response.data); $comstack(element.contents())(scope); });