AngularJS:隔离范围+双向绑定+ ng-repeat不起作用

时间:2015-02-12 22:43:12

标签: angularjs angularjs-directive angularjs-ng-repeat

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;
}

1 个答案:

答案 0 :(得分:1)

这是我似乎经常回答的一个常见问题。指令可以嵌套其他HTML元素,就像<input>可以嵌套在<div>中一样。但是,嵌套在指令中的元素不是指令的一部分,并且不作为指令的范围,它们的范围限定为它们所在的HTML。唯一可以访问隔离范围的项目是指令定义中的compilelinkcontrollertemplate项。如果您将内部html从fieldset内部移动到模板中,它将按预期运行。

您还可以参考http://angular-tips.com/blog/2014/03/transclusion-and-scopes/了解更多示例和测试方法。