javascript - angularjs api ,返回对象

标签 javascript angularjs factory

我使用 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;

        }*/
    };
});

并使用这个工厂,但是在单击 Controller 中,我使用我的工厂,我得到“未定义”,我如何获取我的对象? Controller 代码:

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

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

});

最佳答案

返回函数内的$http。然后在 $scope 函数中执行:

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

请注意,我自己没有尝试过,但它应该可以工作/帮助您让它工作。

顺便说一句:返回日期/数据是没有用的,因为 $http 是一个 promise ,并且在应该返回值时该变量不会被解析。

关于javascript - angularjs api ,返回对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33088821/

相关文章:

javascript - 如何使用 Protractor 测试来确定是否发布我的应用程序?

javascript - 与 Angular-Material 一起使用时,有时不显示 Angular-Messages

javascript - 了解 ng-table 演示中的延迟排序示例

Java MVC、工厂和观察者模式结合在一起

design-patterns - 工厂、抽象工厂和工厂方法

swift - 工厂构造函数应该如何在 Swift 中完成?

javascript - HTML 空白屏幕

javascript - 从其他文件使用 Electron 远程

javascript - 带有 css3 和 html5 的简单窗口系统渲染缓慢。如何加快速度?

javascript - angularjs 对数组进行排序 orderby