4

我已经使用backbone.marionette. 当Marionette.ItemView我从 a 触发事件时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'
    }
});
4

1 回答 1

9

您需要添加{trigger: true}

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

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

于 2012-06-30T08:26:30.173 回答