ng-repeat没有输出任何内容。在链接函数中,我可以看到$ scope.clients是一个数组。如果我删除隔离范围,并使用父范围,则ng-repeat有效。
html with directive" clients"。
<div container
ng-cloak
ng-app="summaryReportApp"
ng-controller="summaryReportController as summaryReport">
<fieldset clients="summaryReport.clients">
<legend>Clients</legend>
<div align="left">
<div ng-repeat="client in clients track by $index">
{{client}}
</div>
</div>
</fieldset>
</div>
指令
var clients = function(){
var definition = {
restrict: "A",
scope: {
clients:"=clients"
},
link: function($scope,$element,attributes){
}
}
return definition;
}
答案 0 :(得分:1)
这是我似乎经常回答的一个常见问题。指令可以嵌套其他HTML元素,就像<input>
可以嵌套在<div>
中一样。但是,嵌套在指令中的元素不是指令的一部分,并且不作为指令的范围,它们的范围限定为它们所在的HTML。唯一可以访问隔离范围的项目是指令定义中的compile
,link
,controller
和template
项。如果您将内部html从fieldset内部移动到模板中,它将按预期运行。
您还可以参考http://angular-tips.com/blog/2014/03/transclusion-and-scopes/了解更多示例和测试方法。