【问题标题】:Content specific page titles in UI-RouterUI-Router 中的内容特定页面标题
【发布时间】:2015-09-10 21:52:17
【问题描述】:

在使用 UI-Router 时,如何处理特定于内容的页面标题?

我可以很好地处理正常的页面标题,例如:

.state('login', {
    url: '/login',
    views: {
        "navbar": {
            template: normalNavbarTemplate
        },
        "content": {
            template: '<login authenticated="(bCtrl.userSession && bCtrl.userSession.isAuthenticated)"></login>'
        }
    },
    title: 'My Website (0.2) - Login'
})

然后:

$rootScope.$on('$stateChangeSuccess', function (evt, toState) {
    $window.document.title = toState.title;
});

但是当您希望您的标题包含您使用 resolve 获得的内容特定内容时会发生什么?

我猜你可以将 $window 注入到你的组件中,然后这样设置标题,但感觉很乱。有没有我可能错过的更好的食谱?

谢谢

【问题讨论】:

    标签: javascript angularjs routing angular-ui-router page-title


    【解决方案1】:

    您可以在解析中更改标题属性:

    resolve: {
        content: function($http) {
            return $http.get('some_url').then(function(result) {
    
                this.self.title = result.data.title; // set the title property to whatever you like
    
                return result;
            }.bind(this));
        }
    }
    

    【讨论】:

    • 我不知道你能做到,太棒了!
    • 我用它来设置视图的权限,确实很棒:)
    • 总之,与 bind(this) 有什么关系。我通常不会在解析中使用它,这对设置页面标题很重要吗?
    • 如果您不将.bind(this) 转换为then(function() {}),则this 将不是视图。
    • 好吧,我猜这对 Javascript 来说是正确的?
    猜你喜欢
    • 2014-07-11
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多