Я боролся весь день, не в силах понять, как правильно создать дочерний маршрутизатор с помощью Durandal в моем проекте на основе горячего полотенца (MVC4 SPA). Вот что у меня есть на данный момент:
оболочка.js
var routes = [
{ route: '', moduleId: 'home', title: 'Home', nav: 1 },
{ route: 'inventory/index', moduleId: 'inventory/inventory', title: 'Inventory', nav: 2 }];
return router.makeRelative({ moduleId: 'viewmodels' }) // router will look here for viewmodels by convention
.map(routes) // Map the routes
.buildNavigationModel() // Finds all nav routes and readies them
.activate(); // Activate the router
инвентарь.js
define(['services/logger', 'plugins/router'], function (logger, router) {
var title = 'Details';
var childRouter = router.createChildRouter()
.makeRelative({
moduleId: 'viewmodels/inventory',
fromParent: true
}).map([
{ route: '', moduleId: 'inventory', title: 'Inventory', nav: 3 },
{ route: 'items', moduleId: 'items', title: 'Items', nav: 4 }])
.buildNavigationModel();
var vm = {
router: childRouter,
activate: activate,
title: title
};
return vm;
//#region Internal Methods
function activate() {
logger.log(title + ' View Activated', null, title, true);
}
//#endregion
});
Проблемы, которые у меня есть на данный момент:
- Просмотр инвентаря активируется дважды, когда я нажимаю на него
- Дальнейшие параметры навигации не отображаются, хотя в правом верхнем углу появляется пустой трехмерный прямоугольник со скругленными углами ... Я не уверен, что это индикатор выполнения, который не исчез, или какой-то неисправный элемент навигации.
Мои файлы проекта организованы следующим образом:
inventory/index
на splat-маршрутinventory/index/*whatever
в shell.js. См. durandaljs.com/documentation/Using-The-Router. - person RainerAtSpirit   schedule 13.11.2013system.log('Route \'' + coreFragment + '\' Not Found');
, чтобы иметь некоторое представление о том, что происходит). - person BlueMonkMN   schedule 13.11.2013