簡體   English   中英

在angularjs的父頁面和彈出頁面之間傳遞數據的最佳方法

[英]Best way to pass data between a parent and popup page in angularjs

我有一個頁面,從中單擊按鈕,然后打開一個彈出頁面。 我需要一種將json數據從父頁面傳遞到彈出窗口的方法。 這兩個是單獨的角度應用。

然后根據用戶的操作修改數據,然后將其提交回父頁面。 我看過AngularJS:打開一個新的瀏覽器窗口,但仍保留作用域和控制器,以及在打開彈出窗口時將數據附加到父頁面控制器中$ window對象的服務 ,將數據分配給彈出窗口的作用域和然后在彈出窗口中將修改后的數據分配給彈出窗口控制器中的$ window.opener對象,以便在父級中可用。

我想知道是否存在通過使用服務並在兩個頁面/應用程序之間傳遞數據來完成此任務的角度方法。

我看過http://answer.techwikihow.com/27863/share-single-service-between-multiple-angular-js-apps.html ,它顯示了如何在兩個ng-app之間傳遞數據,但我想知道是否還有比這更干凈直接的解決方案。 我不想在彈出窗口的控制器中引用$ window對象來訪問共享數據,然后設置opener屬性。 我希望能夠編寫一個共享服務,該共享服務可以/可以不使用$ window對象(最好不使用),並在父級和彈出窗口之間傳遞數據。

我最終做了以下工作:

  1. 在父頁面控制器中,我做了:

     function ParentCtrl($scope, window){ window.parentScope = $scope; window.open(childPageURL, params); } 
  2. 在我的子控制器中:

     function ChildCtrl($scope, window){ var sharedData = window.opener.parentScope.someData; //Some code which changes sharedData window.opener.parentScope.someData = sharedData; window.opener.parentScope.$apply(); } 

它似乎為我工作。 我唯一想做的就是抽象出服務中的邏輯,兩個控制器都可以與之通信並共享數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM