Routing.navigate vs document.location.hash

Routing.navigate vs document.location.hash

本文关键字:location hash document vs navigate Routing      更新时间:2023-09-26

我用backbone.marionette构建了一个网络应用程序。当我从Marionette.ItemView触发事件时document.location.hash

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

1.a) 它改变了网址1.b) 它触发了应用路由

如果我从同一位置触发Routing.navigate

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

2.a) 它按预期更改了网址2.b) 它不会触发应用路由。

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

谢谢。

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

添加{trigger: true}

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

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