我有一个关于ng-repeat指令内的置换(transclusion)问题。Angular在模板中找不到.transclude元素,因此无法进行替换。我认为这是由于ng-repeat在置换时会删除.transclude元素导致的。我想知道如何在ng-repeat获取placeholder之前进行替换,或者以其他方式解决这个问题。
附注:如果我使用ng-transclude指令,则代码按预期工作,但是我必须使用$parent {{$parent.item.name}}来访问值,这并不是我喜欢的。
这是我的代码的缩小版本:
HTML
附注:如果我使用ng-transclude指令,则代码按预期工作,但是我必须使用$parent {{$parent.item.name}}来访问值,这并不是我喜欢的。
这是我的代码的缩小版本:
HTML
<div mydir="items">
{{item.name}}
</div>
template.html
<div ng-repeat="item in items">
<div class="transclude"></div>
</div>
指令
app.directive("mydir" , function(){
return {
templateUrl : "template.html",
transclude : true,
scope : {
items: "=mydir"
},
link : function($scope , $element , attrs , $ctrl , $transclude){
$transclude(function($content){
$element.find(".transclude").replaceWith($content);
});
},
};
})
编译前预期结果
<div mydir="items">
<div ng-repeat="item in items">
{{item.name}}
</div>
</div>