2013-05-27 2 views
2

У меня есть следующие маршруты: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 } 

Где навигации к «тест» показывает мне/папка/2 (но URL остается/контрольная работа). Как я могу достичь этого, используя durandal router?

ответ

2

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

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

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

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

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

значение идентификатора должно быть 2.

Надежда, что помогает, и если он не пытается выглядя немного больше на documentation :)