当人们直接点击路由器时,如何更改路由器中的URL?

时间:2013-06-20 06:53:50

标签: knockout.js router single-page-application durandal

我正在开发一个有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
}];

当人们直接点击路由器时,地址栏中的网址如下:

http://localhost:7778/#/batch

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

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

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

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

1 个答案:

答案 0 :(得分:0)

您可以在主视图模型上添加一个可观察属性,该属性包含批量URL(带参数)。 将此网址绑定到菜单的链接。 通过这样做,您将需要使用参数创建新路线。例如: ?/#/分批PID =:PID&安培; batchId =:出价

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

我希望它有所帮助。