杜兰道尔(Durandal Routing):映射具有ID的路线?

问题描述:

我有以下路线:

 router.map([                
        { url: 'home', moduleId: 'viewmodels/home', name: 'Home', visible: false },               
        { url: 'my', moduleId: 'viewmodels/folder', name: 'My Content', visible: false }, // Should display contents of /folder/2
        { url: 'public', moduleId: 'viewmodels/folder', name: 'Public Content', visible: false }, // Should display contents of /folder/3
        { url: 'set/:id', moduleId: 'viewmodels/set', name: 'Set', visible: false },
        { url: 'folder/:id', moduleId: 'viewmodels/folder', name: 'Folder', visible: false }
    ]);

我想添加如下内容:

{ url: 'test', moduleId: 'viewmodels/folder', id: '2', name: 'Specific Folder', visible: false }

导航至测试"的位置显示为/folder/2(但URL仍为/test).如何使用durandal路由器实现此目的?

Where navigating to 'test' shows me /folder/2 (but the url stays /test). How can I achieve this using the durandal router?

在路由映射上使用设置对象,如下所示:

Use the settings object on the route mapping as below:

{ 
    url: 'test',
    hash: '#/test',
    moduleId: 'viewmodels/folder',
    name: 'Specific Folder',
    visible: false,
    settings: {
        id: 2
    }
}

您可以按照下面的视图模型进行调试(看来Sammy实例将作为参数传递):

You can debug this as in the below view model (it appears the Sammy instance is being passed in as a parameter):

define(function (require) {
    return {
        activate: activate
    };

    function activate(sammy) {
        var settings = sammy.routeInfo.settings;
        var id = settings.id;
        debugger;
    }
});

id的值应为2.

希望有帮助,如果不尝试,请多看一下文档: )

Hope that helps, and if it doesn't try looking a bit more at the documentation :)