我有这个工厂:
.factory('FeedLoad', function ($resource) {
return $resource('http://ajax.googleapis.com/ajax/services/feed/load', {}, {
fetch: { method: 'JSONP', params: {v: '1.0', callback: 'JSON_CALLBACK'} }
});
})
工厂以这种方式召集:
FeedLoad.fetch({
q: data.responseData.url
}, {}, function (data) { //lookup title
if (data.responseStatus != 200) {
return;
}
$scope.feed.title = data.responseData.feed.title;
});
我试过这种方法将其转换为角度ES6服务:
class FeedParserService {
constructor($resource) {
'ngInject';
RESOURCE.set(this, $resource);
}
feedLoad(){
return RESOURCE.get(this)('http://ajax.googleapis.com/ajax/services/feed/lookup', {}, {
fetch: { method: 'JSONP', params: {v: '1.0', callback: 'JSON_CALLBACK'} }
});
}
}
我试图这样称呼它:
data = feedParserService.feedLoad().fetch({
q: this.dataSet[i].szUrl;
}, {}, function(data){
});
但它似乎不起作用。我可以用一只手。
答案 0 :(得分:0)
因此,对于此用例,您应该使用工厂而不是服务。
在大多数使用factory
方法的情况下,它实际应该使用service
方法,并且在ES6中为class
。这种情况是例外。您需要注册一个调用$resouce factory
的工厂方法。
在ES6和(如果你用require替换import,主要是ES5)它应该是这样的:
import {app} from '../app';
feedLoadFactory.$inject = ['$resource'];
feedLoadFactory($resource) {
return
$resource('http://ajax.googleapis.com/ajax/services/feed/load',
{}, {
fetch: {
method: 'JSONP',
params: {v: '1.0', callback: 'JSON_CALLBACK'}
}
});
}
app.factory('feedLoad', feelLoadFactory);
然后您可以将其注入feedLoad
并将其用作feedLoad.fetch...