Estou tentando limpar o HTML no controlador comoEstou tentando atualizar o document.title dinamicamente com o título da postagem. (Eu sei que, para fins de SEO, isso não é recomendado, mas preciso usá-lo aqui)
$scope.prevTitle = "dynamic title gets pulled in here &"
document.title = $scope.prevTitle
Neste exemplo, acabei de usar uma entidade HTML aleatória. Tentei o método parseAsHtml no diretório documentação oficial mas não estou tendo sorte. Tentei o seguinte:
document.title = $sce.parseAsHtml($scope.prevTitle)
Mas sem sorte. A documentação sugere que ele precisa ser usado dentro de uma função. Alguma sugestão de como eu conseguiria isso?
Um log do console acima (console.log ($ sce.parseAsHtml ($ scope.prevTitle))) retornaria:
function (b,c){return e.getTrusted(a,d(b,c))}
Respostas:
2 para resposta № 1$sanitize
pode ser usado como @acg apontado. Como alternativa, você pode usá-lo diretamente com o ng-bind-html
diretiva em que limpa automaticamente a variável de saída antes de renderizar a saída.
O ponto acima não é muito claro no documentação, mas há um exemplo bastante extenso nele com o qual você pode jogar no pluncker.
Lembre-se também de que ngSanitize
é um módulo externo e você precisa carregar explicitamente angular-sanitize.js
ou inclua-o em sua minimização do js.
1 para resposta № 2
Use $ sanitize e trustAsHtml em vez disso
Em primeiro lugar, injete "ngSanitize" em seu módulo
Agora em seu controlador, basta adicionar
$scope.prevTitle = "dynamic title gets pulled in here &"
document.title = $sce.trustAsHtml($scope.prevTitle)
0 para resposta № 3
Se você quiser higienizar o html retornado, acho que seria tão simples quanto usar o $ sanitize serviço:
document.title = $sanitize($sce.parseAsHtml($scope.prevTitle))