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