javascript jquery angularjs angularjs-scope google-contacts

javascript - ¿Cómo actualizar angularjs $ scope desde $.get jquery?



angularjs-scope google-contacts (1)

Estoy tratando de usar el siguiente código y usar $scope :

var scopes = "https://www.googleapis.com/auth/contacts.readonly"; setTimeout(authorize(), 20); function authorize() { gapi.auth.authorize({client_id: clientId, scope: scopes, immediate: false}, handleAuthorization); } invitePeersController.gmailContacts = []; function handleAuthorization(authorizationResult) { if (authorizationResult && !authorizationResult.error) { $.get("https://www.google.com/m8/feeds/contacts/default/thin?alt=json&access_token=" + authorizationResult.access_token + "&max-results=50000&v=3.0", function(response){ //process the response here console.log(response); var jsonChildData = JSON.parse(JSON.stringify( response.feed.entry)); for(var i=0; i<jsonChildData.length;i++){ try { var item = {}; var name = JSON.stringify(jsonChildData[i].title.$t); var email = JSON.stringify(jsonChildData[i].gd$email[0].address); if(name.substring(1, name.length-1) && email.substring(1, email.length-1)){ item ["name"] = name.substring(1, name.length-1); item ["email"] = email.substring(1, email.length-1); item ["id"] = email.substring(1, email.length-1).replace(/[^a-zA-Z ]/g, ""); invitePeersController.gmailContacts.push(item); } } catch(err) { // console.log("Something went terribly wrong while trying to fetch Gmail Contacts Data"); } } InvitePeersService.setGmailContactsData(invitePeersController.gmailContacts); console.log(invitePeersController.gmailContacts); $scope.$apply(function(){ $scope.gmailData = invitePeersController.gmailContacts; console.log($scope.gmailData); }) }); } } }

Puedo obtener la respuesta en $scope pero no puedo obtener la información en otro lugar.

¿Cómo puedo usar ese valor en $scope ?

Intenté seguir esta pregunta y apliqué $scope.$apply() pero no está funcionando.


Necesitas mover el siguiente bloque:

InvitePeersService.setGmailContactsData(invitePeersController.gmailContacts); console.log(invitePeersController.gmailContacts); $scope.$apply(function () { $scope.gmailData = invitePeersController.gmailContacts; console.log($scope.gmailData); })

en el

function(response){

bloquear, de modo que se inicializa invitePeersController.gmailContacts , ya que la respuesta viene en una función de devolución de llamada .

Por lo tanto:

var scopes = "https://www.googleapis.com/auth/contacts.readonly"; setTimeout(authorize(), 20); function authorize() { gapi.auth.authorize({client_id: clientId, scope: scopes, immediate: false}, handleAuthorization); } invitePeersController.gmailContacts = []; function handleAuthorization(authorizationResult) { if (authorizationResult && !authorizationResult.error) { $.get(''https://www.google.com/m8/feeds/contacts/default/thin?alt=json&access_token='' + authorizationResult.access_token + ''&max-results=50000&v=3.0'', function (response) { //process the response here console.log(response); var jsonChildData = JSON.parse(JSON.stringify(response.feed.entry)); for (var i = 0; i < jsonChildData.length; i++) { try { var item = {}; var name = JSON.stringify(jsonChildData[i].title.$t); var email = JSON.stringify(jsonChildData[i].gd$email[0].address); if (name.substring(1, name.length - 1) && email.substring(1, email.length - 1)) { item [''name''] = name.substring(1, name.length - 1); item [''email''] = email.substring(1, email.length - 1); item [''id''] = email.substring(1, email.length - 1).replace(/[^a-zA-Z ]/g, ''''); invitePeersController.gmailContacts.push(item); } InvitePeersService.setGmailContactsData(invitePeersController.gmailContacts); console.log(invitePeersController.gmailContacts); $scope.$apply(function () { $scope.gmailData = invitePeersController.gmailContacts; console.log($scope.gmailData); }) } catch (err) { // console.log("Something went terribly wrong while trying to fetch Gmail Contacts Data"); } } }); } }