【发布时间】:2014-07-08 17:03:31
【问题描述】:
我正在开发一个表格形式的 AngularJS 指令。父级大多数控件ng-table 需要为其选项和模型具有隔离范围。
但是,子级应该“继承”该范围,这样您就不必将大量选项传递给相互关联的组件组。
例如:
<div ng-table="tableOptions" ng-model="results">
<div ng-table-header>
<div ng-table-header-column="column"
ng-repeat="column in tableOptions.columns">
{{column.name}}
</div>
</div>
<div ng-table-body>
<div ng-table-row="row"
ng-repeat="row in $results">
<div ng-table-cell="column"
ng-repeat="column in tableOptions.columns">
{{row[column.id]}}
</div>
</div>
</div>
<div ng-table-footer></div>
</div>
在上面的例子中,ng-table-header、ng-header-column等都需要访问父控件ng-table的属性。此外,所有指令replace 和transclude。
我知道我可以将 broadcast 事件传递给子/父指令,但是有没有更好的方法来限制父级的范围并将其自动传递给子级?
【问题讨论】:
-
将 ng-table 定义为具有独立作用域(作用域:{}),并让子指令具有子作用域(作用域:true)。这样,子指令将继承范围变量,一直到隔离的父范围。
-
请注意:Angular 文档建议避免使用
ng-前缀作为专有指令的前缀,因为如果他们推出自己的ng-table实现,您可能会遇到问题。最好在那里使用你自己的前缀......
标签: angularjs angularjs-directive angularjs-scope