$resource - ngResource 的正确配置
$resource - proper configuration for ngResource
我的应用程序中有 3 个对象,游戏、问题和答案。
classes 配置如下:
class Game{
id;
Question[] questions;
}
class Question{
id;
text;
Answer[] answers;
}
class Answer{
id;
text;
}
我正在尝试正确配置 ngResource 来处理此 class 设置。理想情况下,我想要实现的是这样的:
app.factory('gameRepository', function($resource){
var gameResource = $resource('/api/Games/:id', { id: '@id' });
return {
get: function(id){ return gameResource.get({id: id}); }
};
});
app.controller('myController', function(gameRepository){
var game = gameRepository.get(17);
var questions = game.$getQuestions();
var answers = questions[0].$getAnswers();
});
我知道可以通过这样做来实现其中的一些:
var gameResource = $resource('/api/Games/:id/:action', { id: '@id', action: '@action' },
{
getQuestions: { method: 'GET', isArray: true, params: { action: 'Questions'}
},
);
然而,我在这一点之后卡住了。理想情况下,我想要做的是让 $getAnswers 方法 return 一个来自不同资源(一个新的问题资源)的对象,然后反过来,有一个 return 来自一个对象的 $getAnswers 方法答案资源。这里的目标是将方法保留在实际资源对象上,而不是将它们提取到单独的 factory/service 调用中。
此外,我希望能够从知识库中请求特定问题。像这样:
var game = gameRepository.get(17);
var question = game.$getQuestion(1);
据我所知,无法按照我使用的方式将特定参数传递给 $resource 自定义操作。
任何人都可以指出我正确的方向吗?谢谢!
结果比我想象的要容易得多。
$resource 函数创建一个函数,所有从资源返回的对象都继承该函数。因此,您可以这样做:
gameResource.prototype.$getQuestion = function(id){ ... }
我的应用程序中有 3 个对象,游戏、问题和答案。
classes 配置如下:
class Game{
id;
Question[] questions;
}
class Question{
id;
text;
Answer[] answers;
}
class Answer{
id;
text;
}
我正在尝试正确配置 ngResource 来处理此 class 设置。理想情况下,我想要实现的是这样的:
app.factory('gameRepository', function($resource){
var gameResource = $resource('/api/Games/:id', { id: '@id' });
return {
get: function(id){ return gameResource.get({id: id}); }
};
});
app.controller('myController', function(gameRepository){
var game = gameRepository.get(17);
var questions = game.$getQuestions();
var answers = questions[0].$getAnswers();
});
我知道可以通过这样做来实现其中的一些:
var gameResource = $resource('/api/Games/:id/:action', { id: '@id', action: '@action' },
{
getQuestions: { method: 'GET', isArray: true, params: { action: 'Questions'}
},
);
然而,我在这一点之后卡住了。理想情况下,我想要做的是让 $getAnswers 方法 return 一个来自不同资源(一个新的问题资源)的对象,然后反过来,有一个 return 来自一个对象的 $getAnswers 方法答案资源。这里的目标是将方法保留在实际资源对象上,而不是将它们提取到单独的 factory/service 调用中。
此外,我希望能够从知识库中请求特定问题。像这样:
var game = gameRepository.get(17);
var question = game.$getQuestion(1);
据我所知,无法按照我使用的方式将特定参数传递给 $resource 自定义操作。
任何人都可以指出我正确的方向吗?谢谢!
结果比我想象的要容易得多。
$resource 函数创建一个函数,所有从资源返回的对象都继承该函数。因此,您可以这样做:
gameResource.prototype.$getQuestion = function(id){ ... }