他のスタックオーバーフローに関する質問の1つでこのスニペットが見つかりました。Angularjsで末尾のスラッシュを削除する
$urlRouterProvider.rule(function($injector, $location){
let path = $location.path();
let hasTrailingSlash = path[path.length-1] === '/';
if(hasTrailingSlash) {
console.log('coming in the has trailing slash rule function');
let normalizedPath = path.substr(0, path.length - 1);
$location.replace().path(normalizedPath);
}
});
私は、フォーム/class/121/
でURLを入力すると/class/:id
上記の機能が完全に正常に動作し、以下のフォーム/school/:id
、/school
、/:id
にいくつかのURLを持っており、それは同様に/about-us/
リダイレクト、/class/121
にリダイレクト〜/about-us
。しかし、/school/
と入力すると、404エラーが発生します。これによるとhttps://github.com/angular-ui/ui-router/wiki/url-routing
'/ user /:id' - '/ user/bob'または '/ user/1234 !!!'と一致します。/user/'でも'/user/'/' user/bob/details 'ではなく'/user/'でも構いません。第二の経路セグメントは、パラメータ「ID」としてキャプチャされます
だから私はそれがこのような場合に/school/:id
状態、音符に行く推測しています、$urlRouterProvider.rule
は呼び出されません。スラッシュ末尾すべてのURLのために理想的モジュール
.config(function($stateProvider) {
'ngInject';
$stateProvider
.state('school', {
hasLefSideMenu: true,
url: '/school/:id',
templateUrl: '/school/school.html',
controller: 'SchoolController',
reloadOnSearch: false,
controllerAs: 'schoolCtrl'
});
})
.config(function($stateProvider) {
'ngInject';
$stateProvider
.state('all-school', {
hasLefSideMenu: true,
url: '/school',
templateUrl: '/all-schools.html',
controller: 'allSchoolsController',
controllerAs: 'allSchoolsCtrl'
});
})
定義いくつかのサンプルを除去しなければなりません。あなたは
$urlMatcherFactoryProvider.strictMode(false)
を使用することができます任意のヘルプ素晴らしいだろうね