Directivas de representación dentro de $ sce.trustAsHtml

He incluido un Plunker aquí: http://plnkr.co/edit/4vqV8toHo0vNjtfICtzI?p=preview

Intento agregar un botón al DOM y al hacer clic debería ejecutar la función vinculada a él. En este caso, debería alertar a “prueba”. Aquí está el código.

controlador

app.controller('MainCtrl', function($scope, $sce) { $scope.trustedHtml = $sce.trustAsHtml(''); $scope.testAlert = function () { alert('testing') }; }); 

HTML

  

$sce.trustAsHtml y ng-bind-html no están destinados a construir HTML con directivas. Esta técnica no funcionará

Esto se debe a que angular funciona comstackndo primero y luego vinculando. Vea la descripción conceptual para una buena explicación.

En resumen, cuando se vincula el HTML definido en su trustAsHtml , es demasiado tarde para que angular compile (y por lo tanto entienda) la directiva ng-click .

Para agregar HTML de forma dinámica, debe consultar el servicio $compile (y / o las directivas). Los doctores están aquí .

Perdón por mi mal ingles.

Para Angular 1.6.1 encontré una solución que funcionó para mí.

modelo:

 

En el controlador:

  $scope.trustAsHtml = function(string) { return $sce.trustAsHtml(string); }; 

Directiva:

 .directive('initBind', function($compile) { return { restrict: 'A', link : function (scope, element, attr) { attr.$observe('ngBindHtml',function(){ if(attr.ngBindHtml){ $compile(element[0].children)(scope); } }) } }; })