Угловой маршрут с $ routeProvider

0

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

У меня есть базовое приложение для тестов, в которых я создал 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-адресу, я остаюсь на индексном представлении.

Любая идея, что я делаю неправильно?

  • 0
    У вас есть атрибут (или элемент) ng-view в вашем файле index.html?
Теги:
angular-ui
angular-routing
route-provider

2 ответа

0
Лучший ответ

Убедитесь, что в вашем index.html установлен атрибут или элемент ng-view. Если он отсутствует, маршрутизатор не будет работать.
Другой хорошей практикой было бы установить ваш контроллер просмотра на маршрутизаторе, например:

$routeProvider
  .when('<route_name>', {
    templateUrl: '../<tempate>.html',
    controller: '<controller_name>',
    controllerAs: 'myController'
  })
  • 0
    У меня есть пустой <ng-view> в точке index.html . Но мне может понадобиться добавить больше вещей? Может быть, есть проблемы, потому что мой модуль контроллеров не совпадает с модулем моего приложения?
0

1. В вашем базовом файле (обычно index.html) убедитесь, что у вас есть директива ng-view которая будет использоваться для загрузки всех частичных представлений

2. Все ли ваши html-шаблоны в том же месте, что и основной файл? Если да, вместо того, чтобы иметь templateUrl как "../index.html" вы можете попробовать установить его на "/index.html". Первый проверяет файл html вне каталога, в котором находится базовый файл, а второй проверяет его в том же каталоге

Ещё вопросы

Сообщество Overcoder
Наверх
Меню