У меня есть 3 объекта в моем приложении, игры, вопросы и ответы.
Классы настроены так:
class Game{
id;
Question[] questions;
}
class Question{
id;
text;
Answer[] answers;
}
class Answer{
id;
text;
}
Я пытаюсь правильно настроить ngResource обрабатывать эту установку класса. В идеале я хотел бы достичь, это что-то вроде этого:
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 возвращал объект из другого ресурса (новый questionResource), а затем, в свою очередь, имел метод $ getAnswers, возвращающийся с ресурса ответов. Цель состоит в том, чтобы сохранить методы в реальном ресурсном объекте, а не извлекать их на отдельный вызов фабрики/службы.
Кроме того, я хотел бы иметь возможность запросить конкретный вопрос из репозитория. Что-то вроде этого:
var game = gameRepository.get(17);
var question = game.$getQuestion(1);
Насколько я могу сказать, что нет никакого способа, чтобы передать конкретный параметр для пользовательского действия $ ресурсов, как я их использую.
Может ли кто-нибудь указать мне в правильном направлении? Благодаря!