2014-09-03 39 views
1

我有一個ngResource對象是這樣的:避免返回的數據保存到ngResource

[...].factory('Event', ['$resource', function ($resource) { 
    return $resource('/events/:id', {id: '@id'}, { 
     resume: {url: '/events/:id/resume'}, 
     signUpload: {url: '/events/:id/sign-upload'}, 
    }); 
}]); 

但是,當我打電話myModel.$resume();myModel.$signUpload()返回的數據被自動保存到我的模型。但是,返回的數據不是我的模型屬性,但實際上是另一個完全不同的回報。

我需要避免自動保存從服務器返回的數據。有沒有什麼開箱即可做到這一點?我不能在這裏找到它:https://docs.angularjs.org/api/ngResource/service/$resource

感謝

回答

0

對於這種情況,你可以嘗試不使用的資源,但創造的服務。

app.service('eventService', ['$http, $q', function ($http, $q) { 
    this.signUpload = function(eventId) { 
     var defer = $q.defer(); 

     $http.get('/events/' + eventId + '/sign-upload') 
     .then(function(result) { 
      defer.resolve(result.data); 
     }) 
     .catch(function(err) { 
      defer.reject(new Error(err)); 
     }); 

     return defer.promise; 

    } 


    // same for other function 
}]); 

注入在控制器此服務,並且只是做eventService.signUpload(EVENTID);

+0

但我想使用'ngService'。它提供了我需要的大部分功能。我仍然使用'$ get','$ save' [...]方法。如何防止默認行爲是一個問題... – 2014-09-03 07:30:01

+0

您可以同時擁有ngResource和ngService資源類型主要用於CRUD操作,並且您可以將eventService用於其他目的......在我們的項目中,我們只使用服務,因爲他們對單元測試更友好。 – gaskar 2014-09-03 07:32:34

+0

然後我可以繼續使用'Event。$ signUpload({id:myModel.id},cb)'。這是同樣的事情......但仍然,我必須爲我所有的模型,需要調用不返回自我對象的API ... – 2014-09-03 07:34:39