gpt4 book ai didi

javascript - GitHub API with Angular - 如何获取用户的公共(public) repo ?

转载 作者:行者123 更新时间:2023-11-29 14:40:33 25 4
gpt4 key购买 nike

我正在尝试打印出 GitHub 上每个 Angular 组织成员的 repo 计数。我已经成功打印了所有的用户名,但是我无法打印 repos,不知道是什么原因造成的。

这是我的 HTML:

<!DOCTYPE html>
<html lang="en" ng-app="myApp">
<head>
<meta charset="utf-8">
<title>GitHub App</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="app.css">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script>
<script src="app.js"></script>
<script src="cntrlr.js"></script>
</head>
<body ng-controller="myctrl">
<h1>GitHub users ranking</h1>
<h3>{{org.login}}</h3>
{{user.public_repos}}
<p ng-repeat="user in memberall">{{user.login}}, {{user.public_repos}}</p>
</div>
</body>
</html>

还有 JS:

var myAppModule = angular.module('myApp', [])
.controller('myctrl', ['$scope', '$http', function($scope, $http){
$http({
method: 'GET',
url: 'https://api.github.com/orgs/angular'+ '?access_token=xxx' })
.then(function(response) {
$scope.org = response.data;
}, function(error) {
displayError("Something went wrong");
});

$http({
method: 'GET',
url: 'https://api.github.com/orgs/angular/members'+ '?access_token=xxx' })
.then(function(response) {
$scope.members = response.data;
}, function(error) {
displayError("Something went wrong");
});

$http({
method: 'GET',
url: 'https://api.github.com/orgs/angular/members?page=2'+ '&access_token=xxx' })
.then(function(response) {
$scope.members2 = response.data;
}, function(error) {
displayError("Something went wrong");
});

$http({
method: 'GET',
url: 'https://api.github.com/orgs/angular/members?page=3'+'&access_token=xxx' })
.then(function(response) {
$scope.members3 = response.data;
}, function(error) {
displayError("Something went wrong");
});

$http({
method: 'GET',
url: 'https://api.github.com/users' + '?access_token=xxx' })
.then(function(response) {
$scope.user = response.data;
$scope.memberall = $scope.members.concat($scope.members2, $scope.members3);
for(var index = 0; index < $scope.memberall.length; index++) {
$http.get("https://api.github.com/users/" + $scope.memberall[index].login + '?access_token=xxx');
$scope.repos = response.data[index].public_repos;
}
}, function(error) {
displayError("Something went wrong");
});
}]);

如果有人能告诉我我犯了什么错误,我将不胜感激。

最佳答案

您只调用 $http 但不处理返回的数据。

$http.get("https://api.github.com/users/" + $scope.memberall[index].login).then(function(res) {
console.log(res.data.public_repos);
});

这会为您提供存储库 ID。

你可以在这个 url 获得实际的 repos(用你的 token 替换'xxx'):

'https://api.github.com/users/' + $scope.memberall[index].login + '/repos'

编辑:这里的关键是使用 array.forEach() 这样您就不必使用数组索引(这不适用于简单的 for 循环,因为 $http “创建”了一个新的作用域和变量我在里面是不可访问的)

var myAppModule = angular.module('myApp', [])
.controller('myctrl', ['$scope', '$http', function($scope, $http){
$http({
method: 'GET',
url: 'https://api.github.com/orgs/angular'+ '?access_token=xxx' })
.then(function(response) {
$scope.org = response.data;
}, function(error) {
displayError("Something went wrong");
});

$http({
method: 'GET',
url: 'https://api.github.com/orgs/angular/members'+ '?access_token=xxx' })
.then(function(response) {
$scope.members = response.data;
}, function(error) {
displayError("Something went wrong");
});

$http({
method: 'GET',
url: 'https://api.github.com/orgs/angular/members?page=2'+ '&access_token=xxx' })
.then(function(response) {
$scope.members2 = response.data;
}, function(error) {
displayError("Something went wrong");
});

$http({
method: 'GET',
url: 'https://api.github.com/orgs/angular/members?page=3'+'&access_token=xxx' })
.then(function(response) {
$scope.members3 = response.data;
}, function(error) {
displayError("Something went wrong");
});

$http({
method: 'GET',
url: 'https://api.github.com/users' + '?access_token=xxx' })
.then(function(response) {
$scope.user = response.data;
$scope.memberall = $scope.members.concat($scope.members2, $scope.members3);
$scope.memberall.forEach(function(value, index) {
$http.get("https://api.github.com/users/" + value.login + '?access_token=xxx').then(function(res) {
//console.log(res.data.public_repos);
value.nbrRepos = res.data.public_repos;
});
})
}, function(error) {
displayError("Something went wrong");
});
}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myctrl">
<h1>GitHub users ranking</h1>
<h3>{{org.login}}</h3>
{{user.public_repos}}
<p ng-repeat="user in memberall">{{user.login}}, {{user.nbrRepos}}</p>
</div>

关于javascript - GitHub API with Angular - 如何获取用户的公共(public) repo ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38827693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com