当尝试在md-virtual-repeat中使用ng-transclude时,我非法使用ng-transclude指令

时间:2016-03-21 07:05:34

标签: angularjs angular-material

我创建了一个使用角度材质的md-virtual-repeat-container组件的指令。

angular
      .module('MyApp')
      .directive('myDirective', function() {
          var template = document.getElementById("myDirective").innerHTML;
            return {
              replace: true,
              transclude: true,
              template: template,
              controllerAs: 'ctrl',
              controller: function() {
              this.items = [];
              for (var i = 0; i < 100; i++) {
                  this.items.push(i);
              }
          }
        }
      });

我的HTML

<div class="virtualRepeatdemoVerticalUsage" ng-app="MyApp" style="height:100%;width:800px">
  <my-directive>
    <span>Hello</span>
  </my-directive>
</div>
<script type="text/template" id="myDirective">
  <div style="height:100%; width:800px;">
    <md-virtual-repeat-container id="vertical-container" layout="column" style="background-color:yellow;height:100%;width:100%;min-height:0px">
      <div md-virtual-repeat="item in ctrl.items" class="repeated-item" style="background-color:orange;width:100%">
        {{item}}
        <ng-transclude></ng-transclude>
      </div>
    </md-virtual-repeat-container>
  </div>  
</script>

问题是当我运行此代码时,我正在

  

在模板中非法使用ngTransclude指令!没有父母   找到需要转换的指令

这是有道理的,因为ng-trasclude正在成为md-virutal-repeat-container的一部分,并且它没有 trasclude 属性集。< / p>

到目前为止我尝试了什么:

  1. 我尝试创建当前指令的单独子指令,并将 transclude 属性设置为true,但要再次添加该子项,我需要添加ng-转录为&#39; myDirective &#39;指令让我回到同样的问题。

  2. 我尝试替换预链接功能中的内容,但 md-virtual-repeat 会删除预链接之前的内容,而我是无法访问我必须替换transcluded元素的内容。在编译函数中一切都很好,但我无法在编译函数中访问transcluded元素。

  3. Source of virtual repeat container

    我为此创建了codepen。请玩它,看看你是否可以通过它。

    提前致谢。

0 个答案:

没有答案