2013-08-29 3 views
6

Я добавляю пару действий на AngularJS ресурс, но когда я вызываю действие, моя функция transformRequest не вызывался:

var _resource = $resource('api/NewItem/:id', 
    { id: '@id' }, 
    { 
     create: { 
      method: 'POST', 
      transformRequest: function (data, headersGetter) { 
       var result = JSON.stringify(data.productIntro); 
       return result; 
      } 
     }, 
     update: { 
      method: 'PUT', 
      transformRequest: function (data, headersGetter) { 
       var result = JSON.stringify(data.productIntro); 
       return result; 
      } 
     } 
    }); 

Если добавить функция глобально на приложении, оно работает:

var newItemApp = angular.module('newItemApp', ['ngResource']) 
.config(function ($httpProvider) { 
    $httpProvider.defaults.transformRequest = function(data) 
    { 
     if (data === undefined) { 
      return data; 
     } 
     var result = JSON.stringify(data.productIntro); 
     return result; 
    }; 
}); 

что мне нужно сделать, это удалить корневой элемент из любого POST или PUT действия, поскольку модель по умолчанию связывания в Web Api не связывает объект JSON, когда этот объект имеет именованный корень.

ответ

5

transformRequest поддерживается с AngularJS 1.1.2. Если вы используете раннюю версию, вам нужно добавить ее в $httpProvider.

+0

Yup - Я думал, что у нас была последняя версия в нашей сборке, но я был неправ. Благодаря! – Stuart

+0

У меня была такая же проблема - я звонил. $ Save на моем ресурсе, но устанавливал transformRequest в 'create'. – Ponny

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