簡體   English   中英

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

[英]How to link to different controllers in Angular

我創建了一個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的更好的方法? 還是這樣就可以了

考慮使用指令,而不是僅將控制器直接附加到DOM元素。 指令允許您顯式處理控制器之間的數據傳遞而無需依賴全局狀態(使用服務的許多解決方案都有效地依賴於全局狀態)。

您可能想創建一個接受某種配置的指令,然后可以通過屬性進行傳遞。

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屬性將在ListCtrl的作用域中可用。 為了處理您的指令使用的模板,你可以使用一個單獨的部分,或者你可以使用transclusion保持的元素在你的主模板。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM