将 angular 工厂转换为 angular es6 服务
Convert angular factory to angular es6 service
我有这个工厂:
.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;
});
我尝试通过这种方式将其转换为 angular 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){
});
不过好像不行。我可以用一只手。
所以对于这个用例,您应该使用工厂而不是服务。
在大多数情况下使用factory
方法,实际上应该使用service
方法,并且是ES6中的class
。这种情况是例外。您需要注册一个调用 $resouce factory
的工厂方法。
在 ES6 和(主要是 ES5,如果你用 require 替换导入)它应该看起来像这样:
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...
使用
我有这个工厂:
.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;
});
我尝试通过这种方式将其转换为 angular 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){
});
不过好像不行。我可以用一只手。
所以对于这个用例,您应该使用工厂而不是服务。
在大多数情况下使用factory
方法,实际上应该使用service
方法,并且是ES6中的class
。这种情况是例外。您需要注册一个调用 $resouce factory
的工厂方法。
在 ES6 和(主要是 ES5,如果你用 require 替换导入)它应该看起来像这样:
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...