1
我想配置Durandal子路由。我有一个上级路由器负责的女巫的公共部分:Durandal子路由器设置与相对模块Id
//main router
return router.map(config.publicRoutes)
.buildNavigationModel()
.mapUnknownRoutes('account/login', '#login/')
.activate();
//public routes
[{ route: 'login', title: 'Login', moduleId: 'account/login', nav: false, hash: '#login/' },
{ route: 'register', title: 'Register', moduleId: 'account/register', nav: false, hash: '#register/' },
{ route: 'reset-password', title: 'Reset password', moduleId: 'account/reset-password', nav: false, hash: '#reset-password/' },
{ route: 'private*details', moduleId: 'private/private-shell', title: 'Application', nav: true, hash: '#private/' }
];
然后子路由器应该负责私人部分。我映射为孩子路由器的路由用户在登录后,根据不同的用户类型(管理员,用户)我激活子路由器与适当的路线:
//initializing the router from the login view
var promise = Q.all([private_shell.initRoutes(isAdmin || true)]);
return promise.then(navigate("#private/silos"));
// child router in private-shell
var privateRouter = router.createChildRouter();
var routes = [];
//method to initialize the proper routes after login
var initRoutes = function (isAdmin) {
privateRouter.reset().makeRelative({
moduleId: 'viewmodels/private/',
fromParent: true
});
console.log(privateRouter);
return privateRouter.map(isAdmin ? config.adminRoutes : config.userRoutes).buildNavigationModel();
};
第一次当路由器初始化所有工作正常,但如果我返回到主路由器(登录视图)和另一个登录被执行子路由器添加两次相关的moduleId。
第一次登录后的路由具有的moduleId'viewmodels /私营/ 路线“,这是正确的,但第二次登录初始化子路由器的路由具有的moduleId'viewmodels /私营/的ViewModels /私人/ 路线'。
GET http://localhost:7777/App/viewmodels/private/viewmodels/private/silos.js 404 (Not Found)
当它应该是:
GET http://localhost:7777/App/viewmodels/private/silos.js
我无法确定是什么可能会导致这样。任何帮助?
路由名称配置正确。他们的模块是问题。每次初始化childRouter时,路由器设置中的moduleId(当我调用'childRouter.makeRelative')到路由moduleId的时候。 'GET http:// localhost:7777/App/viewmodels/private/viewmodels/private/silos.js 404(Not Found)' – razvanz