我需要一个有角度的示例,其中一个控制器包装了另一个控制器。
例如,我想在EndpointListControllerEndpointController之间划分一些逻辑。

EndpointListController具有从存储中获取数据的方法,以及一些适用于整个列表的功能,但是EndpointController具有针对单个端点的逻辑。

最好使用ng-repeat遍历它们并直接在端点上调用方法,如下所示:

<table ng-controller="EndpointListController">
    <tr ng-repeat="endpoint in endpoints">
      <td><input type="checkbox" ng-click="endpoint.select()"></td>
      <td>{{endpoint.label}}</td>
      <td><span class="label label-info">2014-10-10 23:59</span></td>
      <td><span class="label label-success">success</span></td>
      <td><a href="" class="glyphicon glyphicon-cloud"></a></td>
    </tr>
</table>


目前,我被迫做这样的事情:

<tr ng-repeat="endpoint in endpoints" ng-controller="EndpointController" endpoint-data="{{endpoint}}">


不是很优雅...

我想要完成的事情甚至可以通过角度实现吗?可能是我看错了,如果有人可以指出我正确的方向,将不胜感激。

最佳答案

我喜欢这样的容器指令


  这是一个plunker


您可以将小部件代码缩短为以下形式:

<end-point-list class="table">
  <end-point ng-repeat="ep in endpoints" scope="ep" func="selectEp(scope)">
  </end-point>
</end-point-list>


并且您有2条指令,其中一条需要另一个

app.directive("endPointList", function(..
 return {
   controller:'EndpointCtrl',
//
app.directive("endPoint", function(..
   require:'?^endPointList',


因此,您可以在子级上隔离范围,但可以将任何内容传递回控制器。

我忽略了与实际端点连接的部分,不知道这是否是问题的一部分?

09-19 23:21