Backbone.js和jQuery Mobile - 从视图访问路由器功能

时间:2012-08-02 23:42:45

标签: jquery backbone.js

我正在尝试处理路由器文件中的所有页面路由/转换,然后从其他函数引用视图文件中的那些函数。我尝试了一些方法,但无法从视图中访问任何路由器功能。我得到的错误是AppRouter未定义。

**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;
},
...

1 个答案:

答案 0 :(得分:2)

初始化路由器时,您必须执行以下操作:

new AppRouter();

您需要找到一些代码并重写为可以全局访问的内容:

window.appRouter = new AppRouter();

然后您可以像这样访问您的路由器:

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