Routing.navigate vs document.location.hash

Lor*_*ard 4 javascript backbone.js backbone-routing marionette

我已经使用构建了一个Web应用程序backbone.marionette.从a开始Marionette.ItemView,我触发事件document.location.hash:

 document.location.hash = '#tasks/' + this.model.get('id');
Run Code Online (Sandbox Code Playgroud)

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

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

router.navigate('#tasks/' + this.model.get('id'))
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢.

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

Ste*_*hen 9

你需要添加 {trigger: true}

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

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