我遇到了这段代码的麻烦,现在不会抛出错误,所以我不确定是什么问题。我想要做的是从我的Parse数据库中获取一系列课程,并在异步调用完成后将$scope.courses
更新为该结果。现在它输入getCourses
代码并从数据库中检索课程就好了,但承诺似乎没有以某种方式解决。
myApp.factory("coursesService", function($q){
return {
getCourses : function(){
var deferred = $q.defer();
var coursesQuery = new Parse.Query(Parse.Object.extend("Subject"));
coursesQuery.find({
success: function(results){
deferred.resolve(results);
},
error: function(error){
deferred.reject(error);
}
});
return deferred.promise;
}
}
});
myApp.controller('SignUpController', function($scope, coursesService) {
coursesService.getCourses().then(function(results){
$scope.courses = results;
});
});
同样,现在没有错误被抛出,所以我不确定是什么问题。
答案 0 :(得分:0)
没关系,我想出了我的问题。结果我没有更新我的视图,所以我所要做的就是在我的deferred.resolve和deferred.reject代码行之后添加$rootScope.$apply();
。
这是我更新的工厂代码。
myApp.factory("coursesService", function($rootScope, $q){
return {
getCourses : function() {
var deferred = $q.defer();
var coursesQuery = new Parse.Query(Parse.Object.extend("Subject"));
coursesQuery.find({
success: function(results){
deferred.resolve(results);
$rootScope.$apply();
},
error: function(error){
deferred.reject(results);
$rootScope.$apply();
}
});
return deferred.promise;
}
}
});