2016-07-05 7 views
0

私はui-routerを使用しています。<a ui-sref="signup">Signup</a>のようなリンクをクリックすると、状態は正常に読み込まれます。末尾にスラッシュを追加しないようにしてください。

状態は次のようになります。

.state('signup', { 
    url: '/signup', 
    templateUrl: '/signup/signup.view.html', 
    controller: 'signupCtrl' 
}) 

をしかし、私はアドレスバーにアドレスを入力すると、最後のスラッシュがURLに追加されます。私は、私のようなこれを処理するために余分な状態を作ることができる実現:

.state('signup2', { 
    url: '/signup/', 
    templateUrl: '/signup/signup.view.html', 
    controller: 'signupCtrl' 
}) 

が、これは理想的ではありません。代わりにスラッシュを追加する方法はありますか?これは私が使用している何か他のものと衝突するよう

//remove trailing slash from url so it matches states 
$urlRouterProvider.rule(function($injector, $location) { 
    var path = $location.path(); 
    var hasTrailingSlash = path[path.length-1] === '/'; 

    if(hasTrailingSlash) { 

    //if last charcter is a slash, return the same url without the slash 
    var newPath = path.substr(0, path.length - 1); 
    return newPath; 
    } 
}); 

:理想的には、このようなハックを必要としません。

更新

私が使用しています:

$locationProvider.html5Mode(true); 
$urlRouterProvider.otherwise('/'); 

をHTML5モードがなければ、問題が消えます。たとえば、/#/signupと入力すると、末尾のスラッシュが追加されません。

+0

私はちょうど好奇心が強い - なぜあなたはこれを行う必要があるでしょうか?私はui-routerを数回使っていますが、末尾にスラッシュがある場合でも(URLには記載されていませんが)、それは正しく状態を指しています。 – PJDev

+0

しかし、それは状態を指していません。 – tommyd456

+0

何らかの理由で 'mydomain.com/signup'と入力すると、末尾にスラッシュが追加されてしまいます。どうしてですか? – tommyd456

答えて

1

私は問題の解決策を見つけたと思います。アプリケーションの設定に$urlMatcherFactoryProviderを注入し、設定します。

$urlMatcherFactoryProvider.strictMode(false);

+0

ありがとうございます。私は実際にドキュメントでこれを見ていました。私はこれのように修正するのではなく、後続のスラッシュがなぜ追加されているのか理解したい。質問セクションのあなたのコメントを見て、あなたのアプリでは起こらないと言うので、なぜスラッシュが私に追加されているのだろうか? – tommyd456

+0

それは良い質問です。どのブラウザを使用していますか?それはすべてのブラウザで起こりますか?はいの場合は、アプリの設定全体のコードを提供できますか? – PJDev

+0

これはすべてのブラウザで発生します。 – tommyd456

関連する問題