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); });