【发布时间】:2015-12-17 04:12:03
【问题描述】:
问题是控制器不等待使用另一个 $http 服务的服务,我没有得到任何数据。
services.js:
angular.module('starter.services', [])
.factory('Likes', function ($http) {
var likes;
$http.get("http://localhost:8100/js/offers.json")
.success(function (results) {
likes = results.offers;
console.log("ok!");
})
.error(function (results) {
console.log("error");
});
return {
all: function () {
return likes;
},
get: function (likeId) {
for (var i = 0; i < likes.length; i++) {
if (likes[i].id === parseInt(likeId)) {
return likes[i];
}
}
return null;
}
};
})
controllers.js(部分):
.controller('OneCtrl', function($scope, $stateParams, Likes) {
$scope.offer = Likes.get($stateParams.likedId);
})
.controller('LikedCtrl', function($scope, $stateParams, $http, Likes) {
$scope.liked = Likes.all();
})
我已经阅读了有关 Promise、async()、回调和 $q 的文章和主题,但我不知道如何将这些东西集成到我的代码中,尽管尝试了很多次。
【问题讨论】:
-
您的服务需要返回一个承诺。不要使用
success和error回调,只使用then。不要异步分配给任何变量。