Javascript Angular、GitHub API、返回存储库和标记
我对Angular是个新手,对于js也是个新手。我试图返回一个存储库列表,并在每个存储库中列出它的标记。我已经通过以下控制器和工厂获得了存储库Javascript Angular、GitHub API、返回存储库和标记,javascript,git,angularjs,Javascript,Git,Angularjs,我对Angular是个新手,对于js也是个新手。我试图返回一个存储库列表,并在每个存储库中列出它的标记。我已经通过以下控制器和工厂获得了存储库 //Controller claGitHub.controller('repoController', function ($scope, reposFactory) { reposFactory.getRepos().success(function(result){ $scope.repos = result;
//Controller
claGitHub.controller('repoController', function ($scope, reposFactory) {
reposFactory.getRepos().success(function(result){
$scope.repos = result;
console.log(result)
});
});
//Factory
claGitHub.factory('reposFactory', ['$http', function($http){
var repos = [];
repos.getRepos = function() {
return $http.get('https://api.github.com/users/google/repos');
};
return repos;
}]);
使用Angular,我可以遍历每个对象并在我的视图中输出它的属性,哇!问题在于tags属性是一个嵌套的JSON提要,而不是指向实际标记URL的链接。e、 g
tags_url: "https://api.github.com/repos/google/autoparse/tags"
因此,我尝试遍历每个对象,根据它的tags\uurl属性进行另一个AJAX调用,但成功率有限。我的知识参差不齐,这意味着我根本不知道它应该去哪里,以及它在语法上应该是什么样子。我是否需要制造另一个工厂和控制器?或者它应该是现有代码的一部分?任何帮助都将不胜感激
以下是我的观点:
<!-- Repeating section for featured repositories -->
<div data-ng-repeat="repo in repos" class="repo-tile">
<h2>{{repo.name}}</h2>
<ul>
<li>{{repo.description}}</li>
</ul>
</div>
{{repo.name}
- {{repo.description}
我建议在repos服务中结束获取/格式化数据的整个过程
下面的代码返回带有标记承诺的repo,您也可以将整个响应封装在等待所有标记返回的承诺中,但渐进式渲染可能比等待所有标记都返回要好
claGitHub.factory('reposFactory', ['$http', function($http){
var repos = {};
repos.getRepos = function() {
return $http.get('https://api.github.com/users/google/repos')
.then(function(resp) {
return resp.data.map(function(repo) {
$http.get(repo.tags_url).then(function(resp) {
repo.tags = resp.data
})
return repo
})
})
};
return repos;
}]);
然后,您可以绑定到每个repo的.tags
属性,该属性将从未定义的开始,并在tags\u url
请求解决后最终弹出到标签列表中
顺便说一句,避免在提供者后面加上“工厂”之类的后缀:如果它是通过工厂或服务定义的,那么调用它的代码就不重要了
您也有repos
作为[]
-切换到{}我认为第一个“.then(function(repos)”应该是“.then(function(resp)”?刚刚尝试过,效果非常好,非常好!非常感谢。