/ / Angular JS - Como posso higienizar HTML em um controlador? - javascript, angularjs

Angular JS - Como posso higienizar HTML em um controlador? - javascript, angularjs

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))