在ng-include

时间:2015-04-30 14:34:13

标签: angularjs angularjs-ng-include

我在我的应用程序中使用ng-include。它正在工作,但我想知道这是否是一种做ng-include的好方法。 ng-include文件中的html是从其父级调用该函数。

这个例子可以在这个plunkr中看到。 plunkr没有显示按钮,但想法是ng-include文件中的元素正在调用其父函数。这是不好的做法吗?有替代方案吗? 例如,我的ng-include中的html包含:

  <button class="mybutton" ng-click="ctrl.parentFn"></button>

我问的原因是因为我有一个指令,其中有一个带按钮的默认模板。如果用户想要指定自定义模板(如按钮的不同位置或更多元素),则可以指定自定义模板,但允许它们使用其父控制器的默认功能(ng-click)。

任何评论都非常受欢迎和赞赏。

1 个答案:

答案 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