使用DurandalJS / Router从Shell.html获取当前页面的标题

时间:2013-11-12 02:51:25

标签: knockout.js durandal durandal-navigation

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

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

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

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

有任何建议以更好的方式解决这个问题吗?

1 个答案:

答案 0 :(得分: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时,您可以使用activeInstruction的{​​{1}}属性,从那里获取当前router,然后config }}:

title