2017-02-27 1 views
0

J'ai lu la documentation de $ templateCache mais j'ai encore du mal à comprendre comment charger des templates distants dans le cache en utilisant la fonction put.

Voici un exemple:

onBoardingApp.run(function ($templateCache, $http) { 
    $templateCache.put('tpl1.html', '<p>Hello World</p>'); 
    $templateCache.put('tpl2.html', '~/Templates/Pi/pi-1.html'); 
    alert($templateCache.get('tpl1.html')); 
    alert($templateCache.get('tpl2.html')); 
}); 

Alors que mon code renvoie le code HTML pour TPL1, le chemin est retourné pour TPL2. Ma question est: Comment charger un modèle distant en utilisant $ templatecache.put().

Merci pour l'aide.

Répondre

2

Essayez d'appeler le modèle à distance et le mettre sur le templateCache:

onBoardingApp.run(function ($templateCache, $http) { 
    $templateCache.put('tpl1.html', '<p>Hello World</p>'); 
    console.log($templateCache.get('tpl1.html')); 
    $http.get('/Templates/Pi/pi-1.html').then(function (response) { 
     $templateCache.put('tpl2.html', response.data); 
     console.log($templateCache.get('pl2.html')); 
    }, function (errorResponse) { 
     console.log('Cannot load the file template'); 
    }); 
}); 

La raison principale est que templateCache de AngularJS ne reçoit que des valeurs de chaîne, pas comme une directive, où vous pouvez avoir un templateUrl, par exemple.

Here est la doc pour ce ng service

+0

Merci pour la réponse Litta. Malheureusement, la console n'écrit que le 1er modèle et non le second donc je suppose qu'il n'est pas chargé. En outre, j'ai eu une erreur dans le chemin pour tpl2 il devrait être '/Templates/Pi/pi-1.html'. – vegas2033

+0

Désolé, j'ai eu une erreur dans le code ci-dessus ... maintenant devrait fonctionner. En outre, vous devez être sûr de placer le chemin correct pour votre modèle. Pour plus d'informations sur le problème lors du chargement du modèle, vous pouvez déboguer 'errorResponse' sur la fonction $ http. –

+0

En fait il y a une autre faute de frappe dans le get ('pl2.html'). Mais le code fonctionne. Merci de votre aide. – vegas2033