我创建了一个使用角度材质的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>
到目前为止我尝试了什么:
我尝试创建当前指令的单独子指令,并将 transclude 属性设置为true,但要再次添加该子项,我需要添加ng-转录为&#39; myDirective &#39;指令让我回到同样的问题。
我尝试替换预链接功能中的内容,但 md-virtual-repeat 会删除预链接之前的内容,而我是无法访问我必须替换transcluded元素的内容。在编译函数中一切都很好,但我无法在编译函数中访问transcluded元素。
Source of virtual repeat container
我为此创建了codepen。请玩它,看看你是否可以通过它。
提前致谢。