我一直在关注 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);
};
关于javascript - Angular 自定义服务调用失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31306074/