il clic del mouse non funziona dopo compilare ng-bind-html

Ho una direttiva

app.directive("dir", function($compile, $sce){ return{ restrict: "E", link: function(scope, element, attr){ scope.$watch('content',function(){ var html = $sce.trustAsHtml(attr.content); scope.alabala = $compile(html)(scope); },true); }, template: "<div ng-bind-html='alabala'></div>", } }); 

un controller:

 function MainController($scope, $http, customService, $location, $sce, $compile){ $scope.init = function(){ customService.get().success(function(data) { var html = $sce.trustAsHtml(data); $("#dir").attr("content", data); }); }; } 

e nella mia pagina di indice ho:

 <div id="div" ng-controller="MainController" class="pull-right span3" ng-init="init()"> <dir id="dir" ></dir> </div> 

il mio servizio personalizzato restituisce each volta che un altro html contiene per esempio

 <button ng-click='click()'>Click me</button> 

Quello che sto cercando di fare è each volta che spingo un diverso valore nel contenuto della mia direttiva per compilarlo e metterlo nel mio html e gestire la function di click dal mio controller. Perché sono nuovo a AngularJS Ho avuto difficoltà con questo problema per qualche tempo. Per favore aiuto.

Non è necessario affrontare $ sce per soddisfare il tuo scopo.

Puoi passare il tuo HTML come string alla direttiva. Dopo la compilazione nella direttiva functionrà.

In HTML where hai bisogno della directive

 <dir id="dir" content="myVal"></dir> 

Impostare il valore diverso nel controller myVal

 $scope.myVal = '<button ng-click=\'buttonClick()\'>I\'m button</button>'; // HTML as string 

La directive

 myApp.directive('dir', function($compile, $parse) { return { restrict: 'E', link: function(scope, element, attr) { scope.$watch(attr.content, function() { element.html($parse(attr.content)(scope)); $compile(element.contents())(scope); }, true); } } }) 

Controllare il demo