我认为我在理解承诺如何运作方面遇到了一些问题。我知道$ http,$ q和$ resource都会返回承诺。但访问承诺返回的数据,现在这是个问题。
我一直收到一个对我来说没有意义的错误。
TypeError: Cannot read property 'then' of undefined.
服务
this.method = function(args){
return $http.get(url)
.success(function(data.somePropertyOfReturnedDataBecauseItsJSON){
console.log('It got the data');
});
}
控制器
$scope.getData = function(){
service.method(args)
.then(function(data){
$someObject.someProperty = data;
});
}
任何建议和解释都会很棒!
感谢。
答案 0 :(得分:0)
" this.method"为我举起一面红旗。 什么"这"在这种情况下?
您的全方位服务应该是这样的:
myModule.factory('myService', function($http){
var service = {};
var url = 'www.foobar.com/servicepath';
service.method = function(args){ // Where are you using these args?
return $http.get(url)
.success(function(data){
console.log('It got the data');
});
};
return service;
}
答案 1 :(得分:0)
你需要从服务中返回一个承诺,你可以链接承诺,然后像这样使用:
this.method = function(args){
return $http.get(url)
.success(function(data.somePropertyOfReturnedDataBecauseItsJSON){
return some value // what you return here will be the results of then
});
}
$scope.getData = function(){
service.method(args)
.then(function(data){
data here is what you return from the promise
});
}