Eu tenho um elemento que gostaria de vincular html a ele.
<div ng-bind-html="details" upper></div>
Isso funciona. Agora, junto com ele, também tenho uma diretiva que está vinculada ao html vinculado:
$scope.details = 'Success! <a href="#/details/12" upper>details</a>'
Mas a diretiva upper
com div e âncora não avalia. Como faço isso funcionar?
angularjs
angularjs-directive
Amitava
fonte
fonte
Respostas:
Eu também estava enfrentando esse problema e depois de horas pesquisando na internet li o comentário de @ Chandermani, que se mostrou a solução. Você precisa chamar uma diretiva 'compilar' com este padrão:
HTML:
JS:
Você pode ver um violino funcionando aqui
fonte
function(scope, element, attrs)
, de onde você tirou esses três argumentos, escopo , elemento e atributos ?link
propriedade. Eles serão passados automaticamente sempre quelink
for chamado pelo framework Angular. Eles sempre estarão disponíveis.$sce.trustAsHtml
de outra função para criar o HTML que será "compilado" com esta diretiva, você deve removê-lo. Agradecimentos a @apoplexyObrigado pela ótima resposta vkammerer. Uma otimização que eu recomendaria é desassistir depois que a compilação é executada uma vez. O $ eval na expressão watch pode ter implicações de desempenho.
Aqui está um violino bifurcado e atualizado.
fonte
.directive()
código no código postado na resposta não.$eval
- você pode apenas usarattrs.compile
diretamente no lugar da função anônima observada. Se você apenas fornecer uma expressão de string, o angular a chamará$eval
de qualquer maneira.Adicione esta diretiva angular-bind-html-compile
Use-o assim:
Muito fácil :)
fonte
Infelizmente não tenho reputação suficiente para comentar.
Eu não consegui fazer isso funcionar por muito tempo. Modifiquei meu
ng-bind-html
código para usar essa diretiva personalizada, mas não consegui remover o$scope.html = $sce.trustAsHtml($scope.html)
que era necessário para que o ng-bind-html funcionasse. Assim que removi isso, a função de compilação começou a funcionar.fonte
Para qualquer pessoa que lida com conteúdo que já foi analisado
$sce.trustAsHtml
aqui é o que eu tinha que fazer de forma diferenteEsta é apenas a
link
parte da diretiva, pois estou usando um layout diferente. Você também precisará injetar o$sce
serviço$compile
.fonte
Melhor solução que encontrei! Copiei e funcionou exatamente como eu precisava. Obrigado, obrigado, obrigado ...
na função de ligação diretiva que tenho
e no modelo de diretiva:
fonte