2015-04-26 22 views
6

Ho una finestra pop-up che chiama un backend RESTful per eseguire l'autenticazione Oauth, ma quando viene restituito il risultato, visualizza il JSON nella finestra popup invece di chiudere la finestra popup e memorizzare il JSON in un modello. Come posso risolvere questo?Ottieni risultati JSON dalla finestra popup. Angular.JS

this.socialLogin = function(provider) { 
    var url = urlBase + '/' + provider, 
     width = 1000, 
     height = 650, 
     top = (window.outerHeight - height)/2, 
     left = (window.outerWidth - width)/2, 
     socialPopup = null; 

    $window.open(url, 'Social Login', 'width=' + width + ',height=' + height + ',scrollbars=0,top=' + top + ',left=' + left); 
}; 
+0

Perché avete bisogno la finestra in più, in primo luogo? Se è nel tuo dominio puoi usare l'API postMessage per passare i dati alla finestra principale – charlietfl

+0

Quando provo, non succede nulla. – Knoland

+0

quando provi cosa? – charlietfl

risposta

0

La situazione descritta non è probabilmente il modo migliore per risolvere il problema in Angular. Presumo che questo sia scritto all'interno di un controller. In tal caso, effettuare una chiamata a un servizio di back-end è preferibile con il servizio $http. Per fare ciò,

controller.js

angular.module('example') 
    .controller(['$scope', '$http', '$window', function($scope, $http, $window) { 

    $scope.socialLogin = function(urlEnd) { 
    $http.get(urlBase + '/' + urlEnd) // Should probably be posting here... 
     .then(function(res) { // Your JSON response here 
     $scope.doSomethingWithTheResponse(res.data); 
     }, function(err) { // Handle your error 
     $window.alert("We got us an error!\n" + JSON.stringify(err)); 
     }); 
    } 
    }]) 
Problemi correlati