0

私は、次のコードを使用して$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); 
        }) 


       }); 
      } 
     } 

    } 

私は$scopeで応答を得ることができますが、別の場所にデータを取得することはできません。

$scopeでこの値を使用するにはどうすればよいですか?

this questionに従いましたが、$scope.$apply()を適用しようとしましたが、機能しません。 invitePeersController.gmailContactsが初期化されるように、

function(response){ 

ブロックに

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

- 応答がコールバック関数に来るよう:

+0

あなたは 'はconsole.log(invitePeersController.gmailContacts)を行う;'、それはデータを記録していますか? – anoop

+0

@anoopはい、そうです。 –

+0

コンソールにエラーがありますか?あなたは '$ scope'コントローラを注入していますか?これは' service'ですか?また、提案として '$ http.get()'を使うべきです – anoop

答えて

0

は、次のブロックを移動する必要があります。したがって

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"); 
      } 
     } 
     }); 
    } 
} 
+0

まだ同じです。 –

+0

どこに/どのようにデータを表示しますか? – Ioan

+0

$ scopeから直接表示しようとしています –

関連する問題