2016-11-20 87 views
0

我有兩個組件有很多交叉引用。我決定讓他們互相依賴:AngularJS:組件中的相互依賴關係

taskList組件:

angular.module("todo-feature") 
    .component("taskList", { 
     templateUrl: "feature/todo-feature/todo_table.html", 
     controller: "Todo", 
     require: { 
      "parent": "paging" 
     } 
    }); 

paging組件

angular.module("paging-module") 
    .component('paging', { 
     templateUrl: "feature/todo-feature/paging/paging.html", 
     controller: "PagingController", 
     require: { 
      "parent": "taskList" 
     } 
    }); 

index.html

<paging></paging> 
<task-list></task-list> 

它不工作。我收到兩個錯誤:

Controller 'paging', required by directive 'taskList', can't be found! 
Controller 'taskList', required by directive 'paging', can't be found! 

我怎樣才能解決這個問題?完全是好建築嗎?你會推薦什麼?

+0

無論兩個組成部分沒有另外一個作爲父母。他們是兄弟姐妹。 – estus

回答

1

從設計的角度來看,創建這樣一個緊密依賴的組件是不可取的。相反,您可以創建通用服務並在它們之間共享數據,也可以在分頁和任務列表組件的頂部創建父組件來管理這兩個組件。檢查哪一種更適合您的情況。

1

首先需要的語法應該是類似parentCtrl: "^taskList"。這將從其元素到其父母尋找所需的控制器。在api文檔here中閱讀更多信息。

執行要求在這兩個組件引用對方是不可能的,可能它不會工作。

我建議你可以有一個共同的服務或具有父子成分並實現單向綁定