2014-09-15 5 views
6

Так что я пытаюсь загрузить шаблон в моей директиве. Эта директива многоразовая. Но я не могу загрузить шаблон. У меня были другие шаблоны, которые загружены и работают правильно.

Ошибка, что я получаю:

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

Javascript файл, содержащий директиву:

/** 
* 
*/ 
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" 
    }; 
}); 

шаблон файла:

<div> 

Hello world 

{{artifactClassification}} 


</div> 

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

Правда, , помните, что templateUrl нуждается в пути от корня вашего приложения. – user2847643

+0

Не уверен, если я последую за ним. Таким образом, шаблон находится в плагине, который используется в этом проекте. – krs

+0

Да и обратите внимание, что угловой поиск .html-файла в корне вашего webapp. Если вы разместили плагин в папке где-то, вам нужно указать весь путь от корня. Скажите /common/directives/someplugin/classificationviewer.html. – user2847643

ответ

3

Проблема заключается в том, что по какой-то причине ваш сервер HTTP не может найти шаблон в рабочем каталоге.

Вы можете протестировать его прямо в браузере:

<url>/classificationviewer.html 

И вы должны увидеть 404 NOT FOUND, что означает, что этот шаблон не был найден.

Вы сказали, что ваши другие шаблоны работают отлично, поэтому вы можете найти, где они находятся в вашем рабочем каталоге, и разместить его в том же месте.

2

Следующее возможное решение: 1. Проверьте правильность пути. Проверьте вкладку сети ли вы получаете 200 OK 2. Проверки на вкладке источников для HTML файла 3. Если вы используете WebPack затем измените templateUrl в шаблон и использовать требует, чтобы загрузить файл

Смежные вопросы