2012-08-02 215 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