我在使用 $q.defer();
时遇到了一些问题。
当我使用回调函数代替后,我的代码可以工作(视图被更新),但是使用$q.defer();
却无法工作。
这是我的代码:
这个服务:
eventsApp.factory('eventData', function($http, $q) {
return {
getEvent: function(callback) {
var deferred = $q.defer();
$http({method: 'GET', url: '/node/nodejsserver/server.js'}).
success(function(data, status, headers, config){
//callback(data.event);
deferred.resolve(data.event);
console.log('status: ', status, ' data: ', data);
}).
error(function(data, status, headers, config){
deferred.reject(status);
console.log('status: ', status);
});
return deferred.promise;
}
};
});
控制器:
eventsApp.controller('EventController',
function EventController($scope, eventData) {
$scope.event = eventData.getEvent();
}
);
但它没有起作用。
后来我发现了这个答案,然后我像这样更新了我的控制器:
eventsApp.controller('EventController',
function EventController($scope, eventData) {
eventData.getEvent().then(function(result) {
$scope.event = result;
});
}
);
它可以工作。
非工作代码和工作代码的区别是什么?