0

我有一個返回的對象的數組控制器的服務,控制檯 顯示內訪問服務返回的對象以下回應:如何從控制器

Array[0] 
0 
: 
Object 
first_name 
: 
"Emi" 
id 
: 
"255860959988416847" 
last_name 
: 
"Hauritz Seino" 
url 
: 
"https://www.pinterest.com/amusemi/" 
__proto__ 
: 
Object 
1 
: 
Object 
first_name 
: 
"mohammed" 
id 
: 
"474848491869398608" 
last_name 
: 
"al-kahtani" 
url 
: 
"https://www.pinterest.com/alkahtani0848/" 
__proto__ 
: 
Object 
2 
: 
Object 
first_name 
: 
"❤ T r e n d 2 W e a r ❤ " 
id 
: 
"418553496527224475" 
last_name 
: 
"" 
url 
: 
"https://www.pinterest.com/trend2wear/" 
__proto__ 
: 
Object 
length 
: 
3 
__proto__ 
: 
Array[0] 

我需要幫助瞭解如何數組顯示「0」的長度,而其中有三個對象,以及如何從控制器內訪問這些對象。

控制器代碼:

$http.get('json/ConfigData.json').success(function(data) { 
     $scope.ebayApiURL = data.ebay.BeautyebayPopularItems; 
     var parampins= 'PinsByBoard'; 
     var paramApiURL='PinsByBoardByTokenAPIURL' 
     arrpins=data.Pinterest[parampins]; 
     arrapiurl =data.Pinterest[paramApiURL]; 
     console.log(arrapiurl); 
     console.log(arrpins); 
     $scope.UrlArr=[]; 
     for(var i=0; i<data.Pinterest[parampins].length ;i++) 
     { 
      var PinFullUrl=arrapiurl + arrpins[i] + data.Pinterest.PiNJSONCALLBACKByToken; 
      console.log(PinFullUrl); 
      $scope.UrlArr[i]=PinFullUrl; 

     } 
      $scope.Creator=[]; 
      $scope.Creator=Comics.LoadDataFromPinteByToken($scope.UrlArr); 
      console.log($scope.Creator); 
     }) 

服務代碼:

var deferred = $q.defer(); 
       var urlCalls = []; 
       var mergedArray =[]; 
       var k=0; 
       angular.forEach(UrLArray, function(url) 
       { 
       urlCalls.push($http.jsonp(url)); 
       }); 
       $q.all(urlCalls) 
        .then(function(results) { 
        deferred.resolve(
        JSON.stringify(results.length)) 
        console.log(results); 
        for(i=0;i<results.length;++i) 
         mergedArray[i]=results[i].data.data.creator; 


      }, 
       function(errors) { 
       deferred.reject(errors); 
       }, 
       function(updates) { 
       deferred.update(updates); 
       } 

      ) 
        return mergedArray; 

      } 

回答

1

必須退回了在這樣

var deferred = $q.defer(); 
       var urlCalls = []; 
       var mergedArray =[]; 
       var k=0; 
       angular.forEach(UrLArray, function(url) 
       { 
       urlCalls.push($http.jsonp(url)); 
       }); 
       $q.all(urlCalls) 
        .then(function(results) { 
        deferred.resolve(
        JSON.stringify(results.length)) 
        console.log(results); 
        for(i=0;i<results.length;++i) 
         mergedArray[i]=results[i].data.data.creator; 

      }) 
        return deferred.promise; // return the promise 

      } 
// and use then within controller 
// like : service.getData().then(function(resolved_data){ 
//console.log(resolved_data) 
//}) 
+0

的returend承諾樣子的服務承諾內沒有數據:Promise $$ state : 對象 狀態 :值 : 「3」 __proto__ : 對象 __proto__,我需要returen的mergedarray,非常感謝艾哈邁德 : 對象 –