Tengo un elemento al que me gustaría vincularle html.
<div ng-bind-html="details" upper></div>
Eso funciona. Ahora, junto con él, también tengo una directiva que está vinculada al html enlazado:
$scope.details = 'Success! <a href="#/details/12" upper>details</a>'
Pero la directiva uppercon div y anchor no evalúa. ¿Cómo lo hago funcionar?
angularjs
angularjs-directive
Amitava
fuente
fuente

Respuestas:
También estaba enfrentando este problema y, después de horas buscando en Internet, leí el comentario de @ Chandermani, que resultó ser la solución. Necesita llamar a una directiva de 'compilación' con este patrón:
HTML:
JS:
Puedes ver un violín de trabajo aquí.
fuente
function(scope, element, attrs), ¿de dónde sacaste esos tres argumentos, alcance , elemento y atributos ?linkpropiedad. Se pasarán automáticamente cada vez quelinkel framework Angular los llame. Siempre estarán disponibles.$sce.trustAsHtmldesde otra función para crear el HTML que se "compilará" con esta directiva, debe eliminarlo. Gracias a @apoplexyGracias por la gran respuesta vkammerer. Una optimización que recomendaría es dejar de mirar después de que la compilación se ejecute una vez. El $ eval dentro de la expresión de observación podría tener implicaciones en el rendimiento.
Aquí hay un violín bifurcado y actualizado.
fuente
.directive()código en el código publicado en la respuesta no.$eval, puede usarloattrs.compiledirectamente en lugar de la función anónima observada. Si solo proporciona una expresión de cadena, angular la llamará$evalde todos modos.Agregue esta directiva angular-bind-html-compile
Úselo así:
Realmente fácil :)
fuente
Lamentablemente no tengo suficiente reputación para comentar.
No pude hacer que esto funcionara durante años. Modifiqué mi
ng-bind-htmlcódigo para usar esta directiva personalizada, pero no pude eliminar la$scope.html = $sce.trustAsHtml($scope.html)que se requería para que ng-bind-html funcionara. Tan pronto como eliminé esto, la función de compilación comenzó a funcionar.fuente
Para cualquiera que se ocupe de contenido que ya se ha revisado,
$sce.trustAsHtmlaquí es lo que tuve que hacer de manera diferenteEsta es solo la
linkparte de la directiva, ya que estoy usando un diseño diferente. Deberá inyectar el$sceservicio también$compile.fuente
¡La mejor solución que he encontrado! Lo copié y funciona exactamente como lo necesitaba. Gracias Gracias gracias ...
en la función de enlace de directiva tengo
y en plantilla de directiva:
fuente