2017-01-26 1 views
0

utilisant AngularJS routage, parfois je reçoisAngularJS modèle 404 non trouvé

template/home.html Failed to load resource: 
        the server responded with a status of 404 (Not Found) 

Mais je déclare modèle/home.html en ligne

<script type="text/ng-template" id="template/home.html"> 
    ...template stuff... 
</script> 

De façon inattendue, je ne suis pas 404 chaque fois, mais parfois .

Je l'ai déjà lu this stackoverflow, où ils se souviennent de cette règle https://docs.angularjs.org/api/ng/service/ $ templateCache

Remarque: la balise de script contenant le modèle n'a pas besoin d'être inclus dans la tête du document, mais doit être un descendant du $ rootElement (IE, élément avec l'attribut ng-app), sinon le template sera ignoré.

J'ai déclaré mon application AngularJS sans ng-app, mais par bootstrap

angular.bootstrap(document, ['myapp']); 

Donc, mon rootElement $ est le document. En effet, je ne reçois pas les erreurs 404 à chaque fois. Existe-t-il des conditions de concurrence: parfois $ routerProvider est défini avant que $ templateCache ne soit défini avec mon modèle en ligne.

J'utilise requirejs. Pourrait-il être la cause?

Toute aide?

Répondre

0

Je pense que vous pouvez accidentellement mettre votre script ng-template en dehors de la balise où vous définissez votre application angulaire principale.

<body ng-app="myApp"> 

    // Your Template shuld stay here 

    <script type="text/ng-template" id="template/home.html"> 
    ...template stuff... 
    </script> 
</body> 
+0

Comme je viens d'écrire à ma question, je l'ai déclaré mon application AngularJS sans ng-app, mais par angular.bootstrap d'amorçage (document, [ 'myapp']); –

+0

désolé j'ai raté cette partie. avez-vous essayé d'utiliser ng-app peut-être que cela rétrécit la source du problème –

+0

J'ai besoin de plus de contrôle sur le processus d'initialisation, donc j'utilise le bootstrap manuel. Je ne peux pas ajouter ng-app, car angularjs dit "vous ne devriez pas utiliser la directive ng-app lors de l'amorçage manuel de votre application" –