Angular Factory getdata

时间:2016-02-22 17:29:07

标签: javascript angularjs json api

我正在尝试使用angular.js创建一个工厂,y从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);
    })


  });

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

2 个答案:

答案 0 :(得分:0)

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);
})

答案 1 :(得分:0)

您可以尝试使用plnkr here

它确实:

$resource(user.url)

要求个人用户提供其数据

result.push(userData)

按下结果并返回控制器

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

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