2

我试图找到当前页面的标题(导航)......对我有用的唯一方法是:这有点难看。

<!-- ko foreach: router.navigationModel -->
    <h1 data-bind="text: title, visible: isActive"></h1>
<!-- /ko -->

一个更好的方法是这个......但我不知道当前的索引页面

<!--<h1 data-bind="text: router.navigationModel()[____INDEX____].title"></h1>-->

有什么建议可以更好地解决这个问题???

4

1 回答 1

1

Durandal 的路由器不存储当前路由的索引,它只提供isActive检查给定路由是否处于活动状态的属性。所以唯一的选择是搜索isActive路线。

您可以在您的视图中创建一个计算的而不是foreach在您的视图中使用shell.js该路由查找逻辑:

currentTitle: ko.computed(function () {
    var activeRoute = ko.utils.arrayFirst(router.navigationModel(), 
         function (item) {
            return item.isActive();
    });
    if (activeRoute)
        return activeRoute.title;
})

现在在你的shell.html你可以写:

<h1 data-bind="text: currentTitle"></h1>

或者,正如gerrod在评论中指出的那样,您可以使用activeInstructionthe 的属性router,您可以从中获取电流config,并从那里获取title

<h1 data-bind="text: router.activeInstruction().config.title"></h1>
于 2013-11-12T06:49:11.337 回答