Angular页面标题不解析unicode

时间:2015-07-15 11:33:14

标签: javascript angularjs unicode

我的API返回的数据已经过编码。这在设置页面标题时给了我一些问题。我的路由器设置静态页面的页面标题但是对于我的动态“项目”页面,我通过控制器设置标题。如何正确输出?

<title ng-bind="pageTitle"></title>

例如 - 我的标题“Tom&#8217;s app”按原样输出...而我希望它为"Tom's app"

我尝试过使用$ sce的过滤器,但这并没有改变任何东西。

.filter('raw', function($sce) {
    return function(input) {
        return $sce.trustAsHtml(input);
    }
})

//controller
$rootScope.title = $filter('raw')($scope.project.title);

我的代码:

.config(function($routeProvider) {
    $routeProvider
    .when('/', {
        templateUrl:'pages/home.html',
        data : { pageTitle: 'Home' }
    })
    .when('/portfolio/:projectId', {
        controller:'projectController',
        templateUrl:'pages/project.html',
        data : { pageTitle: 'Project' }
    })
    .when('/portfolio', {
        controller: 'portfolioController',
        templateUrl: 'pages/portfolio.html',
        data : { pageTitle: 'Portfolio' }
    })
    .when('/contact', {
        controller: 'contactController',
        templateUrl: 'pages/contact.html',
        data : { pageTitle: 'Contact' }
    })
    .otherwise({
        redirectTo:'/'
    });
})


.run(['$location', '$rootScope', function($location, $rootScope) {
    $rootScope.$on('$routeChangeSuccess', function (event, current, previous) {
        $rootScope.title = current.$$route.data.pageTitle;
    });
}])


.controller('projectTitle', function($scope, $location, $rootScope, $routeParams, $http, $sce, $filter, WPAPI) {

    $rootScope.title = $scope.project.title;

})

1 个答案:

答案 0 :(得分:0)

令人讨厌的是,我使用的是ng-bind而不是ng-bind-html,这就是过滤器无法正常工作的原因。我使用与上面发布的相同的过滤器以及:

解决了这个问题
<title ng-bind-html="pageTitle | raw"></title>

这种方法的唯一缺点是我不确定我现在可以在其中追加一个字符串。使用ng-bind,我可以说:

<title ng-bind="(pageTitle | raw) + 'more!!'"></title>

但是,这不适用于ng-bind-html。有什么建议吗?