2015-10-12 64 views
0

我与防暴游戏API工作中,创建一个工厂和使用,我需要获取和整理数据angularjs API,返回对象

 angular.module('starter.services', []) 

    .factory('API',function($http){ 
    var data={}; 
    var token = "****"; 
    return{ 
     Getalldata : function(name){ 


      $http.get("https://eune.api.pvp.net/api/lol/eune/v1.4/summoner/by-name/" + name, { 
      params: { 
      api_key: token 
      } 
     }) 
     .success(function(response, error) { 

      var dbc = []; 
      //console.log(response); 
      res = response[name]; 
      //console.log(res); 
      id = res.id; 


      //$scope.img = "http://sk2.op.gg/images/profile_icons/profileIcon"+res.profileIconId+".jpg"; 
      $http.get("https://eune.api.pvp.net/api/lol/eune/v1.3/stats/by-summoner/" + res.id + "/summary", { 
       params: { 
       season: "SEASON2015", 
       api_key: token 
       } 
      }) 
      .success(function(response, error) { 
       //$scope.stat=response.playerStatSummaries 
       response.playerStatSummaries.forEach(function(entry) { 
        //console.log(entry); 
        if(entry.playerStatSummaryType=="Unranked"){ 

        data.norank5x5=entry; 
        } 
        if(entry.playerStatSummaryType=="CAP5x5"){ 
        data.team5x5=entry; 
        } 
        if(entry.playerStatSummaryType=="Unranked3x3"){ 
        data.unrank3x3=entry; 
        } 
        if(entry.playerStatSummaryType=="RankedTeam3x3"){ 
        data.rank3x3=entry; 
        } 
        if(entry.playerStatSummaryType=="RankedTeam5x5"){ 
        data.rank5x5=entry; 
        } 

        //console.log(data.team5x5); 

       }); 
       //console.log(data); 
      //return data; 

      }); 

     }); 

     return date; 
     } 
     /*getRankData : function(name,sezin){ 

      mydata = "kola"; 
      return mydata; 

     }*/ 
    }; 
}); 

,并使用这家工厂,但在点击控制器使用我工厂我得到“未定义”,我怎么能得到我的对象? 控制器代码:

.controller('MainCtrl', function($scope,$rootScope,$ionicLoading,API) { 

    $scope.showmenu = function(){ 
     console.log(API.Getalldata("fenix")); 
    } 

}); 
+0

你能提供任何错误吗?如果您在“fenix”中进行硬编码,您的API调用是否正常工作? –

+0

是的,我没有错误,如果我在控制器中的工厂代码都罚款。 – user2420249

+0

请参阅下面的答案。你正在返回“日期”而不是“数据”,请点击检查,如果这最终成为你的问题。 :-) –

回答

3

返回的$http里面的功能。然后在$scope功能,这样做:

API.Getalldata("something").then(function(response) { console.log(response) }); 

请注意,我没有尝试过这个自己,但它应该工作/帮你得到它的工作。

Btw:返回日期/数据是没用的,因为$ http是一个承诺,并且该变量在应该返回该值时不会被解决。

+0

我试着得到“TypeError:undefined不是函数”。 if if API.Getalldata(“fenix”);获得空物体 – user2420249

+0

我可以得到结果的时间? – user2420249

+0

他是对的。不,你不能“实时”得到结果。 –

0

我想我找到了你的问题。您正在返回“约会”而不是“数据”

angular.module('starter.services', []) 

.factory('API',function($http){ 
var data={}; 
var token = "****"; 
return{ 
    Getalldata : function(name){ 

    [..edited..] 

    }); 

    return date; // HERE, I THINK IS YOUR PROBLEM 
    } 
    /*getRankData : function(name,sezin){ 

     mydata = "kola"; 
     return mydata; 

    }*/ 
};}); 
+0

对不起我的错误,不工作。 – user2420249