将控制器实例的列表存储在AngularJS中的另一个控制器中

Store a list of controller instances in a different controller in AngularJS

本文关键字:控制器 AngularJS 另一个 列表 实例 存储      更新时间:2023-09-26

我需要一个一个控制器包裹另一个控制器的角度示例。举个例子,我想在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>

你有两个指令,其中一个需要另一个,比如

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

因此,您可以在子对象上隔离作用域,但可以将任何内容传递回控制器。

我省略了连接到任何实际端点的部分,不确定这是否是问题的一部分?