2016-07-12 4 views
1

次のように私はMarionettejsでルートを定義しています:マリネットルートの末尾にあるスラッシュを無視する方法は?

ブラウザで次に
var Mn = require('backbone.marionette'); 

var Router = Mn.AppRouter.extend({ 
    routes: { 
     '': 'default', 
     'login': 'login',  // http://localhost:8080/#/login 
     'signup': 'signup' // http://localhost:8080/#/signup 
    }, 
    initialize: function() { 
     var initData = this.getOption('keyInOptions'); 
    }, 
    // below are route functions 
    default: function() { 
     console.log('this is default route'); 
    }, 
    login: function() { 
     console.log('this is login route'); 
    }, 
    signup: function() { 
     console.log('this is signup route'); 
    } 
}); 

module.exports = Router; 

http://localhost:8080/#/login

が正常にログインルートをトリガしますが、

http://localhost:8080/#/login/

(最後にスラッシュを1つ追加)はログインルート機能を起動しません。

... 
'login': 'login', 
'login/': 'login', 
... 

この問題を解決するには、このソリューションは、ルータの定義にエントリを倍増します:​​私は、私は別のルートエントリを定義することができます知っています。 loginlogin/の同じルートハンドラをトリガするより良い方法はありますか?

答えて

3

末尾にスラッシュをかっこで囲んでみましたか?

routes: { 
    'login(/)': 'login' 
} 

バックボーンdocumentationから:以下のよう

経路の一部が括弧 (:オプション/)でそれを囲むことによってオプションにすることができます。

関連する問題