2016-07-12 12 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/

(добавить одну косую черту в конце) не приведет к функции входа в систему. Я знаю, что я могу определить другую запись маршрута:

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

, чтобы решить эту проблему, но это решение удвоит записи в определении маршрутизатора. Есть ли лучший способ запускать один и тот же обработчик маршрута для login и login/?

ответ

3

Вы пытались окружить конечную черту скобками? Как следующее:

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

От позвоночника documentation:

Часть маршрута может быть необязательной, окружив его в скобках (/: опционально).