Durandal Routing: сопоставление маршрута с идентификатором?

У меня есть следующие маршруты:

 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?


person RobVious    schedule 27.05.2013    source источник


Ответы (1)


Используйте объект настроек на сопоставлении маршрута, как показано ниже:

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

Вы можете отладить это, как в приведенной ниже модели представления (похоже, экземпляр Sammy передается в качестве параметра):

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

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

Значение id должно быть равно 2.

Надеюсь, это поможет, и если это не попытка, посмотрите немного больше на документацию :)

person jamiebarrow    schedule 27.05.2013