2012-06-29 90 views
1

我应该如何使用路由器做到这一点?哈希和骨干路由器

var itemView = Marionette.ItemView.extend({ 

    events: { 
     'click #loadPage': 'loadPage' 
    }, 

    loadPage: function() { 
     document.location.hash = '#tasks/' + this.model.get('id'); 
    } 

}); 
+0

究竟是什么你想达到什么样的? – pawlik

+0

我想用router.navigate做同样的事情。或者,也许是无用的,因为Backbone.History记录它按我的方式? –

回答

3

documentation,router.navigate简单代理到Backbone.history,这是全球性的,所以你应该能够使用它没有问题:

Backbone.history.navigate("#tasks/", { trigger: true }) 

预期将触发{trigger: true}选项散列更改,以便您的路由器可以作出反应,如果它已注册该路由。

0

您必须在路由器实例中具有“全局”变量。

然后,只需调用变量是这样的:

// yourRouter was defined in your main controller like this: 
// var YourRouterClass = Backbone.Router.extend({ 
// stuff of your own Router 
// }); 
// var yourRouter = new YourRouterClass(); <- this is your global router instance 
yourRouter.navigate('tasks/'+this.model.get('id'), {trigger : true});