Я пытаюсь понять маршрутизацию, прежде чем приступать к созданию своего приложения, но, похоже, это не работает.
У меня есть базовое приложение для тестов, в которых я создал 3 html файла, соответствующих 3 различным представлениям, и я хочу изменить отображаемое представление в зависимости от маршрутов.
Но я всегда вижу индекс.
Вот файлы:
app.js:
'use strict';
angular.module('BalrogApp', ['ngRoute', 'ui.bootstrap', 'BalrogApp.controllers'])
.config(['$routeProvider', function($routeProvider) {
$routeProvider
.when('/', {
templateUrl: '../index.html'
})
.when('/requests', {
templateUrl: '../views/requestsList.html'
})
.when('/projects', {
templateUrl: '../views/projectsList.html'
})
.otherwise({
redirectTo: '/lol'
});
}]);
requestController.js:
'use strict';
var requestsControllerModule = angular.module('BalrogApp.controllers', ['ngRoute', 'ui.bootstrap']);
requestsControllerModule.controller('requestsController', function($rootScope, $scope, $location, $routeParams) {
this.studentName = "Request";
this.studentMark = 75;
});
projectsController.js:
'use strict';
var projectsControllerModule = angular.module('BalrogApp.controllers', ['ngRoute', 'ui.bootstrap']);
projectsControllerModule.controller('projectsController', function($rootScope, $scope, $location, $routeParams) {
this.studentName = "Project";
this.studentMark = 75;
});
Файлы html почти одинаковы, за исключением некоторых слов и для контроллера, связанного с каждым из них.
Вот несколько строк, которые меняются между html wiews:
index.html:
index view
<div class="row-fluid" ng-controller="requestsController as rc">
<div class="span2">{{rc.studentName}} </div>
</div>
requestList.html:
Request view
<div class="row-fluid" ng-controller="requestsController as r">
<div class="span2">{{r.studentName}} </div>
</div>
projectsList.html
Project view
<div class="row-fluid" ng-controller="projectsController as p">
<div class="span2">{{p.studentName}} </div>
</div>
Byt независимо от того, какой маршрут, если я добавил '/projects' или '/requests' к URL-адресу, я остаюсь на индексном представлении.
Любая идея, что я делаю неправильно?
Убедитесь, что в вашем index.html
установлен атрибут или элемент ng-view
. Если он отсутствует, маршрутизатор не будет работать.
Другой хорошей практикой было бы установить ваш контроллер просмотра на маршрутизаторе, например:
$routeProvider
.when('<route_name>', {
templateUrl: '../<tempate>.html',
controller: '<controller_name>',
controllerAs: 'myController'
})
<ng-view>
в точке index.html
. Но мне может понадобиться добавить больше вещей? Может быть, есть проблемы, потому что мой модуль контроллеров не совпадает с модулем моего приложения?
1. В вашем базовом файле (обычно index.html) убедитесь, что у вас есть директива ng-view
которая будет использоваться для загрузки всех частичных представлений
2. Все ли ваши html-шаблоны в том же месте, что и основной файл? Если да, вместо того, чтобы иметь templateUrl
как "../index.html"
вы можете попробовать установить его на "/index.html"
. Первый проверяет файл html вне каталога, в котором находится базовый файл, а второй проверяет его в том же каталоге
ng-view
в вашем файле index.html?