2016-09-19 4 views
0

他のスタックオーバーフローに関する質問の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)

を使用することができます任意のヘルプ素晴らしいだろうね

答えて

関連する問題