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
, это все еще перейти к главному представлению документов, а не к просмотру деталей.
Не могли бы вы дать мне подсказку о том, что я делаю неправильно?
Здесь маршрутизатор считает, что details
это :stationId
Так что это соответствует первому маршруту /documents/:stationId
и влияет на стоимость details
к stationId
параметр.
Вы должны изменить маршрут для страницы сведений на
.when('/details', {
Или если вы хотите сказать, что stationId
должен быть числом, это можно сделать с помощью углового ui-router:
https://github.com/angular-ui/ui-router/wiki/URL-Routing#regex-parameters
Возможно, вам следует изменить маршрут на
.when('/documents/details/:id/:note', {... });
Это было бы полезно, чтобы получить параметры с помощью $routeParams
в вашем контроллере и т. д.
Поскольку первый маршрут соответствует и выполняется 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
В любом случае слово «детали» будет соответствовать первому маршруту, а не второму. Поэтому стоит избегать такого типа конфигурации.
Вам необходимо указать параметры в маршруте:
.when('/documents/details:documentId', {
templateUrl: '/Scripts/Modules/checklist/views/details.html',
controller: 'checklistDetailsController'
});
Увидеть: https://docs.angularjs.org/api/ngRoute/service/$ маршрут