【问题标题】:Angular Factory getdataAngular 工厂获取数据
【发布时间】:2016-02-22 17:29:07
【问题描述】:

我正在尝试使用 angular.js 创建一个工厂,并且你有来自 github api 的这个 json 结构:

[
  {
    "login": "mojombo",
    "id": 1,
    "avatar_url": "https://avatars.githubusercontent.com/u/1?v=3",
    "gravatar_id": "",
    "url": "https://api.github.com/users/mojombo",
    "html_url": "https://github.com/mojombo",
    "followers_url": "https://api.github.com/users/mojombo/followers",
    "following_url": "https://api.github.com/users/mojombo/following{/other_user}",
    "gists_url": "https://api.github.com/users/mojombo/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/mojombo/starred{/owner}{/repo}",
    "subscriptions_url": "https://api.github.com/users/mojombo/subscriptions",
    "organizations_url": "https://api.github.com/users/mojombo/orgs",
    "repos_url": "https://api.github.com/users/mojombo/repos",
    "events_url": "https://api.github.com/users/mojombo/events{/privacy}",
    "received_events_url": "https://api.github.com/users/mojombo/received_events",
    "type": "User",
    "site_admin": false
  }]

我想从包含用户信息的 url 属性中获取数据,我的想法是从所有用户那里获取该数据。

这是我的代码离工厂很远:

angular
  .module('app')
  .factory('userFactory', function($http){

    function getData(){
      return $http.get('https://api.github.com/users');
    }
    function userData(){
      getData().success(function(data){
        return $http.get('https://api.github.com/users'+ data.url)
      }).error()
    }
    return{
      getData : getData
    }
  });

这是控制器:

angular
  .module('app')
  .controller('listUserController', function($scope, userFactory){
    $scope.users;

    userFactory.getData().success(function(data){
      $scope.users = data;
    }).error(function(error){
      console.log(error);
    })


  });

但是我可以得到数据,请你帮忙.......

【问题讨论】:

    标签: javascript angularjs json api


    【解决方案1】:

    Angular 将 api 响应封装在一个对象中,试试

    userFactory.getData().success(function(response){ // response instead of data
      $scope.users = response.data; // response.data instead of data
    }).error(function(error){
      console.log(error);
    })
    

    【讨论】:

      【解决方案2】:

      你可以试试 plnkr here

      确实如此:

      $resource(user.url)
      

      要求个人用户提供其数据

      result.push(userData)
      

      推送到结果并返回控制器

      userFactory.userData().then(function(data){
          vm.userData = data;
      });
      

      我们在这里使用 $resource 是因为我们希望保留对结果数组中数据的引用。然后在服务器响应后,我们的结果数组将反映变化并显示在视图中。

      【讨论】:

      • 我正在尝试与用户关注者进行 ng-repeat,但没有帮助我......
      • 因为我想做的是从所有用户的 URL 属性中的地址获取数据,然后使用该数据进行 ng-repeat 以生成用户列表
      • 你能再检查一下plnkr吗,修好了。
      • 也许a没有很好地解释我自己,一个例子.....我想从URL中的所有用户那里获取所有存储库,该URL具有repos_url porperty以在视图中显示它
      • 对不起,你的意思是。 1.获取用户列表。 2. 显示用户的repo url列表 例如:-api.github.com/users/defunkt/repos-api.github.com/users/brynary/repos
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-25
      • 2021-12-05
      • 1970-01-01
      • 2016-01-20
      • 2013-11-27
      • 2016-10-06
      相关资源
      最近更新 更多