如何链接到Angular中的不同控制器

时间:2015-09-05 21:05:01

标签: javascript angularjs

我创建了一个ListCtrl,负责从服务器获取数据并对其进行分页(它适用于我的所有资源)。但是,在设置资源路径,默认限制等之前,它必须收到一些configurations ...

我认为这样做的方法是在更大的Controller中使用我的ListCtrl,但是用这样的几个参数初始化它:

<div ng-controller="DashboardCtrl as dashboard">
 <div ng-controller="ListCtrl as list" ng-init="list.init(dashboard.listParams)">
  <... Iterate through list.items ...>
 </div>
</div>

阅读一些文章,我看到使用ng-init并不好,并且只应用于列表初始化。有没有使用ng-init更好的方法?或者这只是好的

1 个答案:

答案 0 :(得分:0)

考虑使用directive而不是直接将控制器附加到DOM元素。指令允许您显式处理控制器之间的传递数据,而不依赖于全局状态(许多解决方案使用服务有效地依赖于该状态)。

您可能希望创建一个接受某种配置的指令,然后您可以通过属性传递该指令。

"react": "^0.14.0-beta3",
"react-dom": "^0.14.0-beta3",
"react-router": "^1.0.0-beta3",
"react-document-title": "^2.0.0",
angular.module('yourApp').directive('yourList', function () {
  return {
    bindToController: true,
    controller: 'ListCtrl',
    controllerAs: 'list',
    scope: {
      params: '='
    }
  };
});

<div ng-controller="DashboardCtrl as dashboard"> <your-list params="dashboard.listParams"></your-list> </div> 属性将在params的范围内提供。要处理指令使用的模板,您可以使用单独的部分,或者可以使用transclusion将元素保留在主模板中。