在我的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>
但是在这一点上,我迷失在孤立范围的迷宫中,对儿童的能见度有限,似乎没有办法从外部控制器访问内部元素。我用google搜索过的许多解决方案似乎都认为指令与控制器交谈是正常的,而不是相反,但这似乎打破了封装。
有关如何做到这一点的任何想法?这个问题的正确AngularJS模式是什么?