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/