1

我有几个面板(ng-repeat),分别有几个示波器。一些示波器和几个控制器。 当我关闭最后面板(范围)时,我需要刷新最后一个面板中的数据。访问相邻的示波器

<div class="panel_block" ng-repeat="panel in content" ng-swipe-right="closeMainMenu()" ng-swipe-left="openMainMenu()"> 
    <div class="panel_in" onscroll="aaa()"> 
      <div panel-content 
       class="panel_in_panel" 
       addpanel="addpanel" 
       length="content.length" 
       lang="lang" 
       content="panel"></div> 
    </div> 
</div> 

我在每个控制器中有更新功能。但是我能否从相邻范围运行功能?

有没有人有任何想法?

+0

我觉得$广播是你所需要的,在这里详细介绍:https://docs.angularjs.org /api/ng/type/$rootScope.Scope – Rasalom 2014-12-05 13:35:11

+0

据我所知,$ broadcast向下派发一个事件给所有的子范围。但它不是子范围,它是下一个范围。 (范围在ng-repeat)。我应该尝试通过angular.element($(“。panel_block:last”)。find(“。panel_in_panel”))scope() – user3774629 2014-12-05 13:46:49

+0

来捕获这个范围,你可以通过$ rootScope来调用它,并且所有作用域都是子对象根。 – Rasalom 2014-12-05 13:53:07

回答

0

有您的方案2种选择:

  • 你可以传递一个回调到面板中,你在你的close方法触发。这种方法的缺点是,最终会导致组件之间的紧密耦合,并且代码可能会很快变得混乱,开始传递的回调越多。

  • 您可以在close方法中广播事件并让其他面板听这个事件。这里是一个很好的资源,解释如何做到这一点(这是很straightforwards和有很多的例子):http://toddmotto.com/all-about-angulars-emit-broadcast-on-publish-subscribing/