Durandal路由器在哪里设置页面标题

时间:2013-05-30 21:21:25

标签: javascript durandal

我正在使用Durandal作为一个非常简单的网站。在我的所有浏览器标签页面标题中都出现了“undefined |”附在应用程序标题的前面。杜兰达在哪里获得并设定了这个价值?

pthalacker

3 个答案:

答案 0 :(得分:4)

最终Durandal的路由器插件正在设置document.title。

https://github.com/dFiddle/dFiddle-1.2/blob/gh-pages/App/durandal/plugins/router.js#L254

onNavigationComplete: function (routeInfo, params, module) {
    if (app.title) {
        document.title = routeInfo.caption + " | " + app.title;
    } else {
        document.title = routeInfo.caption;
    }
},...

通常Durandal能够在路径对象上构建缺少的字幕属性,因此可能在路由设置方式上有所不同。

https://github.com/dFiddle/dFiddle-1.2/blob/gh-pages/App/samples/shell.js#L6

router.map([

   { url: 'hello', moduleId: 'samples/hello/index', name: 'Hello World', visible: true },
   { url: 'hello/:name', moduleId: 'samples/hello/index', name: 'Examples' },...
]);

答案 1 :(得分:1)

您可以在视图模型激活时设置页面标题:

activate: function (params) {

    // Setting page title
    params.routeInfo.caption = "My Page Title";

    return true;
}

答案 2 :(得分:0)

在Durandal 2.1.0

中替换页面标题

(如果您希望页面标题与路线的最后一级不同)

对RainerAtSpirit的回答略有修改:在路线中指定'title'而不是'name'。

router.map([
   { url: 'hello', moduleId: 'samples/hello/index', title: 'Hello World', visible: true },
   { url: 'hello/:name', moduleId: 'samples/hello/index', title: 'Examples' },...
]);