2014-01-28 53 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

這不是您的問題的直接答案,但要注意您的自定義$資源操作名稱。使用delete可能是cause problems if you try to minify your code,因爲它是使用Javascript中的reserved word。通常認爲使用reserved words作爲屬性名稱的做法很糟糕。

有識之士從這裏:

1

你爲什麼不只是抽象掉所有重複的代碼到其他服務中,並注入到這一點你控制器還是使用當前資源的地方?

設置類似questionManagement服務的位置,您可以在其中注入當前的問題服務,並在更高級別的問題域上創建API。在對這些資源做出迴應之後,將所做的所有事情都放回到各種方法中。

請記住,因爲所有這些都是異步的,您需要通過$ q服務或回調函數來實現promise。