2012-08-02 44 views
1

我想處理路由器文件中的所有頁面路由/轉換,然後從其他功能引用視圖文件中的這些功能。我嘗試了幾種方法,但無法從視圖中訪問任何路由器功能。我得到的錯誤是AppRouter未定義。Backbone.js和jQuery Mobile - 從視圖訪問路由器功能

**Code snippet from router.js:** 

... 
var AppRouter = Backbone.Router.extend({ 

routes: { 
    '': 'showDefault', 
    'index': 'showDefault', 
    'cart': 'showCart', 
    '*actions': 'defaultAction' 
}, 

showCart: function(actions) { 
    console.log('show cart called'); 
    this.changePage(cartView); 
}, 
changePage: function(page) { 
    $('body').append($(page.el)); 
    $.mobile.changePage($(page.el), { changeHash: true, transition: 'slide' }); 
} 
... 

**Code snippet from default page view js** 
... 
events: { 
    'click #showCart': 'cartPage', 
}, 
cartPage: function(action) { 
    $.AppRouter.showCart; 
}, 
... 
+0

'$ .AppRouter',就是這個問題。 – 2012-08-02 23:46:27

+1

爲什麼不使用合適的href來激發路由器上的功能,例如'購物車'?如果你想在視圖之間進行交談,使用你自己的Backbone.Events實例和訂閱/發佈設計很好。對不起,如果我誤解了你想要達到的目標。 – 2012-08-03 00:08:10

回答

2

當初始化路由器,你必須做一些事情,如:

new AppRouter(); 

你需要找到的代碼位和改寫成東西可以全球訪問:

window.appRouter = new AppRouter(); 

然後你可以像這樣訪問你的路由器:

appRouter.showCart(); # instead of $.AppRouter.showCart