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'
    });
});
Другие вопросы по тегам