Routing.navigate vs document.location.hash

时间:2012-06-30 08:24:37

标签: javascript backbone.js marionette backbone-routing

我使用backbone.marionette制作了一个网络应用。从Marionette.ItemView开始,我触发事件document.location.hash

 document.location.hash = '#tasks/' + this.model.get('id');

1.a)它改变了URL 1.b)它触发了appRoutes

如果我从同一个地方触发Routing.navigate

router.navigate('#tasks/' + this.model.get('id'))

2.a)它按预期更改了URL 2.b)它不会触发appRoutes。

知道为什么2.b会发生吗?问题在哪里?

感谢。

var Router = Marionette.AppRouter.extend({
    appRoutes: {
        'tasks': 'tasks',
        'tasks/:id': 'taskDetail',
        '*defaults': 'tasks'
    }
});

1 个答案:

答案 0 :(得分:9)

您需要添加{trigger: true}

router.navigate('#tasks/' + this.model.get('id'), {trigger: true})

通常我会扩展路由器,然后添加我自己的导航,自动添加{trigger: true}。我理解为什么开发人员这样做,但它不是我曾经使用它的方式:)