私の AngularJS アプリケーションでは、各セクションにスライダー コントロールを含むアコーディオンを作成する必要があります。アコーディオンとスライダーの両方で API を外側のコントローラーに公開する必要があります。次に例を示します。
accordion.collapseAll()
accordion.openNextPane()
また
slider.resetValue()
そして、コントローラーで次のようなことができるようにしたいと思います。
$scope.clickNext = function() {
$scope.accordion.openNextPane();
};
$scope.clickResetAll = function() {
$scope.items.forEach(function(item, ind) {
$scope.slider[ind].resetValue();
// or:
$scope.accordion.pane[ind].slider.resetValue();
});
}
アコーディオンとスライダーの分離スコープ ディレクティブを作成し、双方向バインディングを使用して、メソッドを親コントローラーに公開できるようにすることを考えています。ページ テンプレートは次のようになります。
<div ng-controller="myController">
<accordion data="accordion">
<div ng-repeat="c in collection">
<accordion-pane>
<slider data="slider"></slider>
</accordion-pane>
</div>
</accordion>
</div>
しかし、この時点で、分離スコープと子の可視性の制限の迷路に迷い込んでおり、外側のコントローラーから内側の要素にアクセスする方法がないようです。私がグーグルで調べた多くのソリューションは、ディレクティブがコントローラーと通信するのではなく、逆の方法で通信するのが正常であると考えているようですが、これはカプセル化を破るようです。
これを行う方法について何か考えはありますか?この問題に対する正しい AngularJS パターンは何ですか?