2 votes

Est-ce que $templateCache ne fonctionne que sur les URL, ou peut-on l'utiliser pour récupérer un fichier HTML ?

J'essaie de faire fonctionner cette commande...

var template = $templateCache.get('nameOfTemplate.html');

Mais quoi que je fasse, je reçois un résultat indéfini.

    var test = $templateCache.get('./templateBase.html')
    console.log("TEMPLATE: " + test)
    var test = $templateCache.get('/templateBase.html')
    console.log("TEMPLATE: " + test)
    var test = $templateCache.get('templateBase.html')
    console.log("TEMPLATE: " + test)
    var test = $templateCache.get('index.html')
    console.log("TEMPLATE: " + test)
    var test = $templateCache.get('app.js')
    console.log("TEMPLATE: " + test)

Mais tout ce que j'obtiens, c'est...

TEMPLATE: undefined
TEMPLATE: undefined
TEMPLATE: undefined
TEMPLATE: undefined
TEMPLATE: undefined

Est-ce parce que cela ne fonctionne que sur les URL ?

Mon templateBase.html est dans le même dossier que mon contrôleur.

Tout ce que je veux, c'est lire le contenu et le mettre dans une variable.

Je viens d'essayer

test = require('./templateBase.html');
console.log("require: " + test)

ce qui a fonctionné, mais require lit le modèle lorsque l'application entière est chargée, et comme j'ai beaucoup de modèles, ce n'est pas une très bonne solution.

2voto

lin Points 13836

Vous pouvez charger des éléments déjà mis en cache en utilisant l'option $templateCache.get() . Je vous promets que vos modèles ne sont pas mis en cache au moment où vous essayez de les charger -> cela se traduit par undefined . Vous avez dit : All I want is to read the content and put into a variable. . Vous pouvez utiliser $http pour charger vos fichiers comme dans ceci violon de démonstration :

$http.get('./template.en.html').then(function (result) {           
  var data = result.data;
  console.log(data);
});

Approche différente avec la mise en cache

Dans cet exemple, votre modèle sera également stocké dans le fichier $templateCache pour une utilisation ultérieure.

$http.get('./template.en.html').then(function (result) { 

  //put template into cache
  $templateCache.put('myTemplateName', result.data);

  //fetch result and log it
  var data = result.data;
  console.log(data);

});

Plus de détails sur la mise en cache des modèles sur Site web de la documentation de $templateCache .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X