 <p>Ok i got it ! try this</p> <pre><code> angular.module('myApp', []) .controller('myController', function($scope, $interval) { var count = 0; var addPerson = function() { count++ $scope.person = { name: 'person' + count, age: 20 + count }; }; var timer = $interval(addPerson, 1000); }) .directive('myDirective', function($compile) { return { restrict: "A", transclude: true, scope: "=", link: function(scope, element, attrs) { scope.handleClick = function(event) { console.log(event.target.innerText) } scope.$watch(function() { return scope.person; }, function(obj) { var elementToRender = angular.element('&lt;div ng-click="handleClick($event)"&gt;' + obj.name + '&lt;/div&gt;'); function renderDiv() { return elementToRender } element.append(renderDiv()); $compile(elementToRender)(scope); }, false); } }; }); </code></pre> <p>template</p> <pre><code>&lt;div ng-app="myApp" ng-controller="myController"&gt; &lt;div my-directive data="{{person}}"&gt;&lt;/div&gt; &lt;/div&gt; </code></pre>