2014-09-03 40 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