我的API返回的数据已经过编码。这在设置页面标题时给了我一些问题。我的路由器设置静态页面的页面标题但是对于我的动态“项目”页面,我通过控制器设置标题。如何正确输出?
<title ng-bind="pageTitle"></title>
例如 - 我的标题“Tom’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;
})
答案 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。有什么建议吗?