所以我用 durandal 创建了一个运行良好的子路由器,我正在尝试在下拉菜单中将它的路由添加到我的主导航中。我使用引导程序只是为了说明这一点。
我对让它工作的一般语法没有问题。问题是如何正确地让我的主导航访问子路线。
因此,简要分解细节:
App/
---ViewModels/
------Config/
---------index.js
------nav.js
---Views/
------Config/
- --------index.html
------nav.html
(希望文件夹结构清晰)
导航视图模型引用了主路由器,我正确绑定了 navigationModel 属性以获取根菜单项。我尝试在视图模型中包含 config/index.js,并创建一个属性 childRouter,然后将下拉元素绑定到 childrouter.navigationModel。这确实创建了正确的项目,但每个路由的哈希都是垃圾。它们不再是 config/x 或 config/y,而是变成了 x 和 y。
我不明白,因为子路由器仍然是从主路由器构建的,并且包括这样的 makerelative 函数:
define(['services/router'],
function (router) {
var childRouter = router.createChildRouter()
.makeRelative({
moduleId: 'viewmodels/config',
fromParent: true
}).map([
{ route: 'x', moduleId: 'x', title: 'X', nav: true },
{ route: 'x/:accountId', moduleId: 'xItem', title: 'X', nav: false },
{ route: 'y', moduleId: 'y', title: 'Y', nav: true }
]).buildNavigationModel();
我假设它会从那个相对点生成散列,但它似乎是从根开始的。
有任何想法吗?