不确定为什么这个看似简单的任务让我感到困惑。我正在尝试向Angular服务添加一些方法。该服务刚开始只对我的API进行一次$resource
调用。我正在添加的是保存和获取本地对象的简单非$ resource方法:
'use strict';
angular.module('gameApp')
.factory('searchService', ['$resource',
function($resource) {
var base = '/api/search?query=:query';
var latestResults = {};
return $resource(base, {}, {
getResults: {method: 'GET', url: base}
}),
saveLatest: function(results) {
latestResults = results;
},
getLatest: function() {
return latestResults;
}
}]);
显然上述内容结构不正确(就saveLatest
和getLatest
而言)。
答案 0 :(得分:1)
您返回的对象应采用
格式return {
method1: function(){...},
method2: function(){...},
method3: function(){...},
};
你的看起来像这样:
return method1(),
method2: function(){...},
method3: function(){...}
希望你能看到上面的材料差异。
,您的代码应该类似于以下内容return {
getResults: $resource(base,{method: 'GET', url: base}),
saveLatest: function(results) {
latestResults = results;
},
getLatest: function() {
return latestResults;
}
}
答案 1 :(得分:1)
现在你设置的方式是同时返回多个逗号描述的值,这是不可能的(假设这不是ES6)。您需要返回一个包含三个返回值的数组或对象:
return [
$resource(base, {}, {
getResults: {method: 'GET', url: base}
}),
function(results) {
latestResults = results;
},
function() {
return latestResults;
}]
或
return {
resource: $resource(base, {}, {
getResults: {method: 'GET', url: base}
}),
saveLatest: function(results) {
latestResults = results;
},
getLatest: function() {
return latestResults;
}
}
此外,通常没有理由公开整个$ resource对象,因此最好只返回它的getResults方法。