ngRoute не работает с файлами внешнего контроллера
Когда я включаю мои контроллеры в файл app.js, функции маршрутизации и контроллеров работают нормально. Это выглядит примерно так:
index.html
<!DOCTYPE html>
<html data-ng-app='ckbApp' >
<head >
</head>
<body>
<div class="container" >
<div ng-include="'header.html'"></div>
<div ng-view class="viewBody">
</div>
<div ng-include="'footer.html'"></div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.6/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.6/angular-route.min.js"></script>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="ckbApp.js"></script>
</body>
</html>
app.js
'use strict';
var app = angular.module('app', ['ngRoute']);
app.config(['$routeProvider',
function($routeProvider) {
$routeProvider.
when('/About', {
templateUrl: 'Views/About.html',
controller: 'controller'
}).
when('/Blog', {
templateUrl: 'Views/Blog.html',
controller: 'controller'
}).
when('/FAQ', {
templateUrl: 'Views/FAQ.html',
controller: 'controller'
}).
when('/Home', {
templateUrl: 'Views/Home.html',
controller: 'controller'
}).
otherwise({
redirectTo: '/Home'
});
}]);
app.controller('controller', ['$scope', '$http', function ($scope, $http) {
$http.get('data.json').success(function(data) {
$scope.data = data;
});
}]);
Но когда я пытаюсь поместить контроллер во внешний файл, ни одна из маршрутизации не работает. Я знаю, что контроллер все еще работает, потому что scope.data по-прежнему загружается для header.html. Мой внешний файл контроллера выглядит примерно так:
'use strict';
angular.module('app', []).controller('controller', ['$scope', '$http', function ($scope, $http) {
$http.get('data.json').success(function(data) {
});
}]);
И у меня есть источник контроллера, включенный в нижней части index.html
<script src="/Controllers/controller.js"></script>
Я где-то читал, что ngRoute требует, чтобы сервер работал, но даже при работе моего сервера он не работает внешне, но работает с контроллером, включенным в app.js
1 ответ
angular.module('app', [])
Это переопределяет модуль с именем "приложение". Вы просто хотите получить ссылку на существующий модуль, определенный в другом файле JS, и добавить к нему контроллер:
angular.module('app')