Angular ngRoute не может загрузить шаблон: Ошибка [$compile:tpload]
Я попробовал простую угловую маршрутизацию, но не могу указать, в чем ошибка. Chrome просто говорит мне, что Angular не может скомпилировать шаблон.
В следующей ссылке вы можете увидеть мою структуру каталогов.
- angular.js
var testApp = angular.module('testApp', ['ngRoute']);
testApp.config(function($routeProvider){
$routeProvider.when('/list', {
templateUrl: 'pages/list.html',
controller: 'mainController'
}).when('/insert', {
templateUrl: 'pages/new.html',
controller: 'newController'
});
});
testApp.controller('mainController', function($scope){
$scope.message = 'main';
});
testApp.controller('newController', function($scope){
$scope.message = 'new';
});
--index.html
<!DOCTYPE html>
<html lang="en" ng-app="testApp">
<head>
<meta charset="UTF-8">
<title>Barfly</title>
<script src="/angular/angular.min.js"></script>
<script src="/angular-route/angular-route.min.js"></script>
<script src="/js/angularApp.js"></script>
</head>
<body ng-controller="mainController">
<a href="#list">list</a>
<a href="#insert">new</a>
<div id="main">
<div ng-view></div>
</div>
</body>
</html>
Это моя ошибка,
Заранее спасибо!
3 ответа
<a data-target="#list">list</a>
<a data-target="#insert">new</a>
РЕДАКТИРОВАТЬ. Извините, я не видел вашу структуру каталогов. Вы уверены, что каталог страниц доступен для общественности? Должен ли каталог страниц быть перемещен в публичный каталог?
Старый ответ:
Ошибка говорит, что templateUrl /pages/list.html не существует. Вы должны либо сохранить файл шаблона в файл /pages/list.html, либо добавить встроенный шаблон в тело html следующим образом:
<script type="text/ng-template" id="/pages/list.html">
my template here
</script>
Я столкнулся с подобной проблемой: templateUrl
файлы могут быть не загружены (все ресурсы не загружены). В моем случае это произошло, когда приложение было загружено в браузер на мобильном устройстве. Это было вызвано ограничениями политики безопасности контента ( как работает политика безопасности контента?)
Я получил CSP, чтобы разрешить все ресурсы, кроме шаблонов, на которые ссылается templateUrl
, Я также попытался загрузить шаблоны через script
директива ( https://docs.angularjs.org/api/ng/directive/script), но безрезультатно.
В конце концов я решил встроить шаблоны в сам маршрут, например так:
testApp.config(function($routeProvider){
$routeProvider.when('/list', {
template: '<li ng-repeat="etcetera"></li>',
controller: 'mainController'
});
});