Javascript AngularJS ng重复不';不能在重写HTML的指令中工作

Javascript AngularJS ng重复不';不能在重写HTML的指令中工作,javascript,angularjs,Javascript,Angularjs,我有一个指令,需要在编译之前对其内容进行一些HTML重写。我已经找到了一种方法,但它似乎对ng repeat不起作用 HTML <body ng-controller="MainCtrl"> <div ng-repeat="source in sources"> <p> {{ source.name }} </p> </div> <div my-template> {{ s

我有一个指令,需要在编译之前对其内容进行一些HTML重写。我已经找到了一种方法,但它似乎对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>
输出为:

source1

source2

[{"name":"source1"},{"name":"source2"}]
因此,
sources
变量在指令的作用域中可见,但ng repeat仍然失败<代码>控制台.log(html)在控制台中显示:

{{ sources }}
<!-- ngRepeat: source in sources -->
{{sources}
这暗示在我的指令之前,ng repeat正在被评估/编译,但我不知道从这里可以走多远


Plunker:

正如GeorgeWG所注意到的,在这种情况下,从“链接”阶段更改为“编译”阶段会有所帮助。

您需要在指令中使用transclude选项,请参见示例。重要信息:您引用了AngularJS(1.0.8)的旧版本,我在示例1.4.1中使用了该版本

角度模块('transcludeExample',[]) .directive('myTemplate',function(){ 返回{ 限制:“A”, 是的, 模板:“” }; }) .controller('ExampleController',['$scope',function$scope){ $scope.sources=[{name:“source1”},{name:“source2”}]; }]);

{{sources}}

{{source.name}


HTML操作应在编译阶段完成。有关更多信息,请参阅。
{{ sources }}
<!-- ngRepeat: source in sources -->