2014-09-15 10 views
6

Quindi sto provando a caricare il modello nella mia direttiva. Questa direttiva è riutilizzabile. Ma non riesco a caricare il modello. Ho avuto altri modelli che sono caricati e funzionano correttamente.

L'errore che sto ottenendo è:

GET /ClassificationToolkitForGrails/classificationviewer.html 404 (Not Found) angular.js:8521 
Error: [$compile:tpload] Failed to load template: classificationviewer.html 

Il javascript file che contiene la direttiva:

/** 
* 
*/ 
var classificationViewModule = angular.module('ald.classificationview',[]); 

classificationViewModule.factory('classificationAPI',function(){ 
    return { 
     getClassification:function($http, artifactId){ 
      //TODO add URL 
      var url = "/Classification/getInfo?artifactId="+artifactId 
      return $http({ 
       method: 'GET', 
       url: url 
      }); 
     } 
    }; 
}); 

/*classificationViewModule.controller('testclassification',['$scope','$http',function($scope,$http){ 
    $http.get("/Classification/getInfo?artifactId=6450").success(function(data){ 
     $scope.classification = data;  
    }) 
}]);*/ 

classificationViewModule.directive('classificationview', function() { 
    return { 
     restrict: 'EA', 
     scope: {}, 
     replace: true, 
     link: function ($scope, element, attributes) { 

     }, 
     controller: function ($scope, $http, classificationAPI) { 

      classificationAPI.getClassification($http).success(function(data,status){    
       //TODO 
       $scope.artifactClassification = data; 
      }).error(function(data,status){ 
       if (404==status){ 
        alert("no text"); 
       } else { 
        alert("bad stuff!"); 
       } 
      });    
     }, 
     //TODO add template url 
     templateUrl: "classificationviewer.html" 
    }; 
}); 

Il modello di file:

<div> 

Hello world 

{{artifactClassification}} 


</div> 

Il file index.html :

< 

!DOCTYPE html> 
<html> 
<head lang="en"> 
    <meta charset="UTF-8"> 
    <meta name="layout" content="main"/> 
    <title>Classification Toolkit for Grails</title> 
    <script type="text/javascript"> 
     angular.module('classtoolkitApp', [ 
      'ald.classificationview' 
     ]).controller('index', function ($scope) { 
     }); 
    </script> 

    <asset:javascript src="ald/classificationview/classificationview.js"/> 
</head> 
<body > 

<div ng-app="classtoolkitApp" ng-controller="index"> 

    classification 
    <classificationview artifactId=6450/> 

</div> 

</body> 
</html> 
+4

Vero che , ti ricordo che templateUrl ha bisogno di un percorso dalla radice della tua app. – user2847643

+0

Non sono sicuro se seguo. Quindi il modello è in un plugin che viene utilizzato da questo progetto. – krs

+0

Sì e nota che angular sta cercando il file .html nella radice della tua webapp. Se hai inserito il plugin in una cartella, devi specificare l'intero percorso dalla radice. Dì /common/directives/someplugin/classificationviewer.html. – user2847643

risposta

3

Il problema è che per qualche motivo il server http non riesce a trovare modello nella vostra directory di lavoro.

È possibile verificare direttamente in del browser:

<url>/classificationviewer.html 

E si dovrebbe vedere 404 NOT FOUND, il che significa che questo modello non è stato trovato.

Hai detto che gli altri tuoi modelli funzionano perfettamente, quindi puoi trovare dove si trovano nella tua directory di lavoro e posizionare questo nella stessa posizione.

2

Di seguito sono riportate le possibili soluzioni 1. controllare il percorso corretto. Controllare la scheda di rete se si stanno ottenendo 200 OK 2. verificare nella scheda fonti per il file HTML 3. se si utilizza webpack quindi modificare il TemplateURL al modello e utilizzare richiedono per caricare il file

Problemi correlati