Javascript — Angularjs маршрутизация не работает правильно

angular.module('Stations', ['ngRoute'])
.config(function ($routeProvider) {
$routeProvider
.when('/documents/:stationId', {
templateUrl: '/Scripts/Modules/checklist/views/index.html',
controller: 'checklistController'
})
.when('/documents/details', {
templateUrl: '/Scripts/Modules/checklist/views/details.html',
controller: 'checklistDetailsController'
})
});

Теперь, если я наберу URL /stations#/documents/4, он переходит к просмотру документов и показывает все документы на этой станции. Но если я пойду на URL stations#/documents/details?Id=3&type=note, это все еще перейти к главному представлению документов, а не к просмотру деталей.

Не могли бы вы дать мне подсказку о том, что я делаю неправильно?

0

Решение

Здесь маршрутизатор считает, что details это :stationId

Так что это соответствует первому маршруту /documents/:stationId и влияет на стоимость details к stationIdпараметр.

Вы должны изменить маршрут для страницы сведений на

.when('/details', {

Или если вы хотите сказать, что stationId должен быть числом, это можно сделать с помощью углового ui-router:
https://github.com/angular-ui/ui-router/wiki/URL-Routing#regex-parameters

1

Другие решения

Возможно, вам следует изменить маршрут на

.when('/documents/details/:id/:note', {... });

Это было бы полезно, чтобы получить параметры с помощью $routeParams в вашем контроллере и т. д.

0

Поскольку первый маршрут соответствует и выполняется details в этом URL рассматривается как идентификатор станции.
Сначала укажите второй маршрут, чтобы он соответствовал первому. Как это.

angular.module('Stations', ['ngRoute']).config(function ($routeProvider) {
$routeProvider
.when('/documents/details', {
templateUrl: '/Scripts/Modules/checklist/views/details.html',
controller: 'checklistDetailsController'
})
.when('/documents/:stationId', {
templateUrl: '/Scripts/Modules/checklist/views/index.html',
controller: 'checklistController'
})

});

Но это будет означать, если ваш stationId В любом случае слово «детали» будет соответствовать первому маршруту, а не второму. Поэтому стоит избегать такого типа конфигурации.

0

Вам необходимо указать параметры в маршруте:

.when('/documents/details:documentId', {
templateUrl: '/Scripts/Modules/checklist/views/details.html',
controller: 'checklistDetailsController'
});

Увидеть: https://docs.angularjs.org/api/ngRoute/service/$ маршрут

-1
По вопросам рекламы [email protected]