2016-11-20 17 views
0

私は多くの相互参照を持つ2つのコンポーネントを持っています。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> 

私は彼らがお互いに依存することにしました。 2つのエラーが表示されます:

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を参照してください。

お互いを参照するために両方のコンポーネントに実装する必要はありません。おそらく動作しません。

私は2つのコンポーネントのどちらが親として別のものを持っていませんが、一般的なサービスを持っているか、親子のコンポーネントを持つことができることをお勧めしますと、一方向のバインディング

関連する問題