我在我的应用程序中使用ng-include。它正在工作,但我想知道这是否是一种做ng-include的好方法。 ng-include文件中的html是从其父级调用该函数。
这个例子可以在这个plunkr中看到。 plunkr没有显示按钮,但想法是ng-include文件中的元素正在调用其父函数。这是不好的做法吗?有替代方案吗? 例如,我的ng-include中的html包含:
<button class="mybutton" ng-click="ctrl.parentFn"></button>
我问的原因是因为我有一个指令,其中有一个带按钮的默认模板。如果用户想要指定自定义模板(如按钮的不同位置或更多元素),则可以指定自定义模板,但允许它们使用其父控制器的默认功能(ng-click)。
任何评论都非常受欢迎和赞赏。
答案 0 :(得分:2)
我不能就这一点进行辩论,但是如果你的div嵌套在几个控制器中,那么你需要使用$parent.$parent.$parent
,这取决于控制器层次结构,它可以增加长度。
所以我建议你使用controllerAs语法,它提供了控制器和放大器的别名。它可以通过任何控制器的别名访问任何div,你可以访问它的方法。
<强>标记强>
<div ng-controller="MainCtrl as main">
{{ main.title }}
<div ng-controller="AnotherCtrl as another">
{{ another.title }}
<div ng-controller="YetAnotherCtrl as yet">
{{ yet.title }}
</div>
</div>
</div>
有关详细信息,请参阅this article。