我正在使用(function ( $ ) {
$.fn.test = function() {
setInterval(hi.call(this), 1000);
function hi(){
console.log(this);
}
};
}( jQuery ));
$('div').test();
和promise
进行异步调用。但它没有用。
eventData.js
$q
EventContrller.js
angular.module('eventsApp').factory('eventData' , function($http ,$q, $log) {
return {
getEvent : function() {
var deferred = $q.defer()
$http({method: 'GET', url: 'http://localhost:8080/springhibernateangularjs/service/events'}).
then(
function(response){
deferred.resolve(response.data);
console.log("succccccc");
},
function(error){
console.log("faiiiiiiil");
deferred.reject(status);
});
return deferred.promise ;
}
};
});
但$scope.event = eventData.getEvent();
未正确加载!
答案 0 :(得分:3)
这是您获取数据的方式,因为您返回的是承诺而不是结果:
eventData.getEvets().then(function(result){
$scope.event = result;
})
答案 1 :(得分:3)
由于$q.defer
服务已经返回承诺,因此无需使用$http
制作承诺。
app.factory('eventData' , function($http) {
return {
getEvent : function() {
//RETURN http promise
return $http.get('http://localhost:8080/springhibernateangularjs/service/events').
then(function(response){
console.log("succccccc");
//return to chain data
return response.data;
},
function(error){
console.log("faiiiiiiil");
//throw to chain rejection
throw error;
});
}
};
});
在控制器中:
eventData.getEvent().then(function(data){
$scope.event = data;
});