0

我正在用 durandal 开发一个 SPA 网站。
这是我的路由器的配置:

var routes = [{
    url: 'profile',
    moduleId: 'viewmodels/profile',
    name: 'Profile',
    visible: true
}, {
    url: 'batchOverview',
    moduleId: 'viewmodels/batchOverview',
    name: 'Batche Overview',
    visible: true
}, {
    url: 'batch',
    moduleId: 'viewmodels/batch',
    name: 'Batche Detail',
    visible: true
}, {
    url: 'page',
    moduleId: 'viewmodels/page',
    name: 'Page',
    visible: true
}];

当人们直接点击路由器时,地址栏中的url是这样的:

http://localhost:7778/#/batch

我想要的是当人们直接单击路由器时,我可以将参数添加到 url。网址可能如下所示:

http://localhost:7778/#/batch?pId=Gridsum&batchId=3

现在,当人们单击自定义按钮时,我可以使用 router.navigateTo(url) 来实现。但是当人们直接单击路由器并动态更改参数时,我需要做到这一点。

我不知道如果我在 router.map() 中设置一个 observable 是否可以。但我认为这不是一个好方法。有没有更好的方法来解决它?

4

1 回答 1

0

您可以在主视图模型上添加一个可观察的属性,其中包含批处理 url(带参数)。将此 url 绑定到菜单的链接。通过这样做,您将需要使用参数创建一个新路由。例如:/#/batch?pId=:pID&batchId=:bID

Durandal 路由基于 SammyJS。因此,如果您需要更多信息路由参数,请查看:SammyJS 路由

我希望它有所帮助。

于 2013-06-20T09:37:17.290 回答