私は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
と入力すると、末尾のスラッシュが追加されません。
私はちょうど好奇心が強い - なぜあなたはこれを行う必要があるでしょうか?私はui-routerを数回使っていますが、末尾にスラッシュがある場合でも(URLには記載されていませんが)、それは正しく状態を指しています。 – PJDev
しかし、それは状態を指していません。 – tommyd456
何らかの理由で 'mydomain.com/signup'と入力すると、末尾にスラッシュが追加されてしまいます。どうしてですか? – tommyd456