我有一个carousel指令,其中包含一些块,用于将传入的数组映射items
到元素结构数组的数组中,然后生成类似于以下伪代码的标记:
这个角度模板如下所示:
[element should be transcluded into this spot.]
鉴于我的观看代码:
{{ item.name }}
我希望transcluded元素绑定到item
最深的对象ng-repeat
这里有一个完整的Plunker和一个减少的测试用例:http://plnkr.co/edit/kYItcXV0k9KvnpiYx1iG
问题是我不能在其中放置一个ng-transclude
属性ng-repeat
(如carousel.js
Plunkr中的指令文件所示)我似乎无法使用transclude()
该compile
步骤中的函数手动将要转换的标记注入该位置.指示.
任何想法将不胜感激.
在现有指令的link函数中设置一个引用transclude函数的变量:
post: function($scope, $element, attrs) { $scope.transclude = transclude; ...
然后,创建一个新指令,用于代替ng-transclude
您希望转换内容出现在以下内容中的元素:
.directive('innerTransclude', function(){ return function(scope, elem, attrs){ scope.transclude(scope, function(clone){ elem.append(clone); }); } })
该指令只是将克隆附加到元素,同时避免尝试在使用包含本身的元素内部使用转换的问题.不要忘记将其添加到您的模板:
<div class="carousel__item-content" inner-transclude></div>
演示