簡體   English   中英

Angular-從子窗口更新父$ scope

[英]Angular - Update parent $scope from child window

這是我要解決的問題。

我有一個window.open函數打開一個小窗口,供用戶使用他們選擇的社交網絡登錄/注冊。 用戶登錄后,我希望關閉小窗口,並且無需刷新頁面即可更新原始父窗口的$scope

我的整個目標是不打斷用戶對網站的體驗。 該站點是一個音樂站點,因此如果用戶正在聽一首歌並且重新加載頁面,則他們將失去在站點中的位置並最終感到不滿意。

我認為就這些。

app.controller('MainCtrl', [

  $scope.loginTrigger = function() {
    window.open("http://www.url.com/login", "_blank", "toolbar=yes, scrollbars=yes, resizable=no, top=0, left=100, width=1000, height=600");
  }

  if ($location.hash()) {
     $http({
      method: 'POST',
      url: '/users/oauth_complete/',
      data: data,
     }).success(function(data){
        if(!data.success){
         $window.location.href = '/usersetup';
        }else {
         $scope.LoggedInUser = data;
         storage.set('LoggedInUser', data);

         //Here is my current code: Small window closes and the parent page reloads but I don't want to use refresh as it will interrupt the user experience.
         window.close();
         window.opener.location.reload();
        }
     },"JSON");
  };

}]);

您可以使用$ emit和$ on在類之間“交談”

在您的登錄控制器中,您將使用$ emit。

$scope.$emit('eventName', myData);

然后在另一個控制器中,您將使用$ on函數進行監聽:

$scope.$on('eventName', function(event, data) { console.log(data); });

暫無
暫無

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

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