ng-bind-html
won't compile the HTML content - it adds it straight to the document.
Instead of using it, create your own binder:
.directive('myOwnBinder', function($compile, $timeout){
return {
restrict: 'E',
scope: {
source: '='
},
link: function(scope, element, attrs) {
scope.$watch('source', function(newVal, oldVal) {
if (newVal === oldVal) return;
element.html(newVal);
$compile(element.contents())(scope);
});
}
}
})
... and use it like so:
<my-own-binder source="link"></my-own-binder>