2
我的一個路由器處理程序會持續觸發兩次。雖然我可以清楚地看到路由觸發器只被觸發一次。我使用的木偶AppRouter類是這樣的:爲什麼我的路由處理程序會觸發兩次?
MainRouter = Backbone.Marionette.AppRouter.extend({
appRoutes: {
"home": "showHome",
"view/:num(/:rev)(/:ms)": "viewSmart", //smart route
"*route": "showHome" //any other unrecognized routes
},
controller: routesController
});
和控制器的處理程序:
routesController = {
showHome: function() {
console.info('go home');
},
viewSmart: function (num, rev, ms) {
console.log('view route action triggered');
},...more routes
在測試這種異常我發現,在viewSmart方法的最後一個可選參數是根本原因。如果我導航到沒有(/:ms)的路由,那麼同一個方法會觸發一次,並使用它兩次。