javascript - Angular 自定义服务调用失败

标签 javascript angularjs plunker

我一直在关注 PluralSight 上的在线教程来使用 Angular,但其中一些信息似乎已经过时。

我已到达有关创建自定义服务的部分,并且已严格按照教程进行操作,但我的自定义服务无法正常工作。

当我尝试调用我的 github 服务时,它似乎失败了,看起来 promise 无法正确返回到 github.getUser( 的 script.js .then() 处理程序)

它的密码在这里 http://plnkr.co/edit/8vy6ZMpUJBfEOQ3qFoKk

有人可以告诉我我在这里缺少什么吗?

最佳答案

如果您只想让它正常工作,请按以下方法修复它:

您的第二个选项是向服务上的 $http 添加返回,如下所示:

var getUser = function(username) {
  return $http.get("https://api.github.com/users/" + username)
    .then(function(response) {
      return response.data;
    });
};

请注意,您只是忘记了 $http 之前的第一个“return”。其余部分运行良好

解决这个问题的更好方法是不在服务中兑现您的 promise 。这样您就可以获得精简服务,并可以在 Controller 中按照您的意愿管理数据。

所以我将你的 getUser 更改为:

var getUser = function(username) {
  return $http.get("https://api.github.com/users/" + username);
};

这样它就会从 $http 返回整个 Promise。由于我删除了您的“包装器”,我也需要修改您的 onUserComplete () :

var onUserComplete = function(result) {
  $scope.user = result.data;
  github.getRepos($scope.user).then(onRepos, onError);
};

这是正在工作的插件:http://plnkr.co/edit/8abkaU08fCzFreA5APz1?p=info

关于javascript - Angular 自定义服务调用失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31306074/

相关文章:

javascript - 使用 jquery ajax 的 Laravel 链式下拉选择

javascript - Plunker 在几天前有效的脚本上给我 404

angularjs - 使用 AngularJS 提交和验证表单的好模式是什么?

javascript - 如何从另一个 Controller 访问所需的 Controller ?

javascript - AngularJS ng-repeat 在重写 HTML 的指令中不起作用

javascript - array.sort() 在 IE 11 中无法使用 compareFunction

angular - Plunker 在更新到 Angular 6 和 rxjs 6 后损坏

javascript - Jquery 自定义排序问题

javascript - 与 Javascript 共享 PHP session

javascript - 将缓冲区存储在 DataView 中,然后使用 Float64Array 提取不起作用