2014-01-28 3 views
1

В принципе, я немного не уверен, как мне создать/управлять моим ресурсом. Я думаю о ресурсе как о модели, как в (MVC) фоне. Так, например, это моя фабрика:Управление угловыми услугами/ресурсами

angular.module('resources.question', ['ngResource']) 
    .factory('Question', function ($resource) { 
     return $resource('/:questionId', {questionId: '@id'}, { 
      postTest: {method: 'POST', url: '/create/:pageId/:questionId', params: {questionId: 0}}, 
      search: {method: 'GET', url: '/search/:query', params: {query: ''}, isArray: true}, 
      edit: {method: 'GET', url: '/edit/:pageQuestionId'}, 
      delete: {method: 'GET', url: '/delete/:pageQuestionId'}, 
      addExisting: {method: 'GET', url: '/addtopage/:pageId/:questionId'} 
     }); 
    }); 

Я замечаю, что у меня есть какие-то повторяющиеся задачи, такие как вставка данных. Например:

var newQuestion = Question.addExisting({ 
    pageId: data.pageId, 
    questionId: data.questionId, 
    id: $scope.data.search.question.id 
}); 
//update object from database 
$rootScope.survey.pages[data.pageIndex].questions.splice(data.questionIndex, 0, newQuestion); //insert the data 

Так что в основном я не уверен, как обращаться с подобными ситуациями. Должна ли моя фабрика каким-то образом расшириться, чтобы справиться с такими манипуляциями с данными, или мне нужно создать другую фабрику для таких задач. Или это просто я передумал?

ответ

0

Это не прямой ответ на ваш вопрос, но будьте осторожны с вашими именными именами ресурсов $ resource. Использование delete может cause problems if you try to minify your code, так как это reserved word в Javascript. В целом считается плохой практикой использования reserved words в качестве имен свойств.

с пониманием здесь:

1

Почему вы не просто абстрагироваться от всех повторяющегося кода в другую службу и привнести что в ваш контроллера или везде, где вы используете текущий ресурс?

Настройте что-нибудь вроде службы questionManagement, в которой вы вводите свою текущую службу вопросов и создаете API, где вы работаете над доменом вопросов на более высоком уровне. Положите все, что вы делаете после того, как ответ на ресурс вернется к этим различным методам.

Помните, что все это будет асинхронным, что вам нужно будет реализовать обещания через службу $ q или функцию обратного вызова.

Смежные вопросы