I have a directive that needs to do some HTML rewriting on its contents before it gets compiled. I've found a way to do that but it doesn't seem to work for ng-repeat.
HTML
<body ng-controller="MainCtrl">
  <div ng-repeat="source in sources">
    <p>
        {{ source.name }}
    </p>
  </div>
  <div my-template>
    {{ sources }}
    <div ng-repeat="source in sources">
      <p>
          {{ source.name }}
      </p>
    </div>
</div>
</body>
JS
var app = angular.module('plunker', []);
app.directive("myTemplate", ['$compile', function ($compile) {
  return {
        restrict: 'A',
        link: function ($scope, $element, $attributes) {
            var html = $element.html();
            console.log(html); // problem?
            $element.html(html);
            $compile($element.contents())($scope);
        }
  }
}])
app.controller('MainCtrl', function($scope) {
  $scope.sources = [{ name: "source1"}, { name: "source2"}]; 
});
The output is:
source1
source2
[{"name":"source1"},{"name":"source2"}]
So the sources variable is visible in the directive's scope but ng-repeat fails anyway. console.log(html) shows this in a console:
{{ sources }}
<!-- ngRepeat: source in sources -->
Which hints at ng-repeat being evaluated/compiled before my directive but I don't know where to go further from this.
Plunker: http://plnkr.co/edit/1NJngUK27IRAp0ELVHFc?p=preview
 
    