如何使用AngularJS服务访问外部APIAngularJS除了能够方便地扩展HTML之外,还提供了一套简单的方法来帮助我们与外部API进行交互。在今天的教程中,我们将讨论如何使用它的服务与GitHub的API交互来创建一个简单的图书馆浏览器。第1步:准备我们从以下一组基本HTML模板开始:
标签中,然后我们将使用它来显示README文件的内容——因为这些内容通常来自GitHubFlavoredMarkdown,并且部分代码行与用户库列表。当然,您可以为其添加更多样式以增强结果的视觉效果——但请注意,本教程中的屏幕截图采用最基本的设计。可以将以后需要编写的JavaScript代码放在本文档的中,也可以为其创建一个独立的文件,但独立文件仍然需要在AngularJS脚本下。第2步:模块现在我们可以为我们的应用程序创建一个模块:varapp=angular.module('githubsearch',[]);接下来,使用ngApp指令将其添加到标记:第3步:控制器我们还需要为我们的应用程序准备一组控制器。为了简化创建过程,我们只为应用程序准备一套控制器,这样我们就不用担心如何在不同控制器之间传递信息:app.controller('SearchController',functionSearchController($scope){});第四步:基础服务我们需要定义自己的GitHub服务:app.factory('GitHub',functionGitHub($http){return{};});我们将使用app.factory()方法,以便保证返回的对象带有稍后将使用的几个方法。我们将使用$http服务从GitHub的API获取数据。第5步:搜索库我们服务中的第一个方法负责使用GitHubAPI搜索库。使用该服务非常简单(该函数可以访问make函数返回的对象):searchRepos:functionsearchRepos(query,callback){$http.get('https://api.github.com/search/repositories',{params:{q:query}}).success(function(data){callback(null,data);}).error(function(e){callback(e);});}$http.get()方法是执行GET请求的快捷方式。第一个参数是我们希望访问的URL。第二个参数表示一个带有选项的对象。我们在这里只需要params对象——它是将添加到请求中的查询参数的哈希值(其中q参数是搜索字符串,您可以在此处阅读更多相关信息)。$http.get()返回一个承诺。我们可以将侦听器附加到success()和error()并相应地调用回调。第6步:搜索栏为了使用我们在前面步骤中定义的功能,我们需要在HTML中添加一个搜索栏。相关代码非常简单,如下所示: {{repo.full_name}} {{repo.description}}
>