2014-10-09 38 views
0

如何爲所有模型添加EllementTransformer?我希望我的所有車型有額外的方法延遲保存,例如:所有路線的Restangular addElementTransformer/extendModel

Restangular.extendModel('*', function(model){ 
    model.delayed_save = _.debounce(model.save, 1000, {maxWait: 5000}) 
} 

但我需要使它成爲我每天的路線。 我知道我可以用路由參數類似這樣的包裝Restangular服務創建工廠:

angular.module('app') 
     .service('restangularService', restangularService) 
    function restangularService(Restangular) { 
     var self = this; 
     self.init = init 

     function init(route) { 
      Restangular.extendModel(route, function(model){ 
       model.deferred_save = _.debounce(model.save, 1000, {maxWait: 5 * 1000}) 
       return model 
      }) 

      return Restangular.service(route) 
     } 
    } 

,這將工作,但我相信一定是一個更好的辦法

回答

0

您可以使用setOnElemRestangularized實現這一。

像這樣的東西應該工作(未經測試)

.config(function(RestangularProvider) { 
    RestangularProvider.setOnElemRestangularized(function(elem, isCollection, what, Restangular) { 
     if (isCollection) { return; } 
     console.log("Path: ", what); 
     elem.newMethod = function() { console.log("TODO: Add code here..."); }; 
    }); 
}) 
0

我需要這個保存如此使用嵌套的資源後刪除parentResource setOnElemRestangularized:

RestangularConfigurer.setOnElemRestangularized(function(elem, isCollection, what, Restangular) { 
    if (!isCollection && elem.fromServer && elem.parentResource) elem.parentResource = null; 
    return elem; 
});