getStuff: function(stuff, callback) {
$http({
method: 'GET',
url: url + "/" + stuff
cache: true
}).success(function(data) {
console.log(data);
callback(data);
});
},
我有上面的代码。我在我的应用程序中多次使用它,但是当我调用这个时,我给予回调不是一个函数。 console.log(数据);然而,返回适当的对象。任何人都知道为什么?
由于
答案 0 :(得分:0)
看一下你调用getStuff的行(stuff,callback)。我的猜测是第二个“回调”参数实际上不是一个函数。经过多年的挫折与沮丧的错误,我已经了解到,如果有疑问,错误信息是100%准确。
答案 1 :(得分:0)
确保 getStuff 功能的第二个参数是功能。但是,您应该使用promise来处理 $ http 请求。根据定义, $ http 返回承诺,并使用 $ q.defer()承诺管理器。使用promise和$ q是一种很好的做法。
<强>服务强>
(function(){
function Service($http, $q){
function get(){
//Use $q.defer() promise manager
var defer = $q.defer();
//Create a defer promise
var promise = defer.promise;
$http.get('path_to_url').then(function(response){
//resolve our data
defer.resolve(response.data);
});
//return the promise
return promise;
}
var factory = {
get: get
};
return factory;
}
angular
.module('app')
.factory('Service', Service);
})();
<强>控制器强>
(function(){
function Controller($scope, Service, $q) {
Service.get().then(function(data){
//Here your resolve data
console.log(data);
})
}
angular
.module('app', [])
.controller('ctrl', Controller);
})();