angularjs api , return 对象
angularjs api , return object
我使用 Riot 游戏 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;
}*/
};
});
并使用这个工厂,但是在控制器中点击我使用我的工厂我得到 "undefined",我怎样才能得到我的对象?
控制器代码:
.controller('MainCtrl', function($scope,$rootScope,$ionicLoading,API) {
$scope.showmenu = function(){
console.log(API.Getalldata("fenix"));
}
});
我想我发现了你的问题。您返回的是 "date" 而不是 "data"
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;
}*/
};});
Return函数里面的$http
。然后在 $scope
函数中,执行:
API.Getalldata("something").then(function(response) { console.log(response) });
请注意,我自己还没有尝试过,但是 work/help 你应该可以让它工作。
顺便说一句:返回 date/data 是没有用的,因为 $http 是一个承诺,并且在应该返回值时变量不会被解析。
我使用 Riot 游戏 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;
}*/
};
});
并使用这个工厂,但是在控制器中点击我使用我的工厂我得到 "undefined",我怎样才能得到我的对象? 控制器代码:
.controller('MainCtrl', function($scope,$rootScope,$ionicLoading,API) {
$scope.showmenu = function(){
console.log(API.Getalldata("fenix"));
}
});
我想我发现了你的问题。您返回的是 "date" 而不是 "data"
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;
}*/
};});
Return函数里面的$http
。然后在 $scope
函数中,执行:
API.Getalldata("something").then(function(response) { console.log(response) });
请注意,我自己还没有尝试过,但是 work/help 你应该可以让它工作。
顺便说一句:返回 date/data 是没有用的,因为 $http 是一个承诺,并且在应该返回值时变量不会被解析。