2013-08-29 13 views
6

dodaję parę działań do zasobu angularjs, ale kiedy powoływać się na działanie, moja funkcja transformRequest nie jest uzyskiwanie nazywa się:

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; 
      } 
     } 
    }); 

Jeśli dodać funkcja globalnie w aplikacji, to działa:

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; 
    }; 
}); 

Co muszę zrobić, to usunąć element główny z dowolnego POST lub PUT działania, ponieważ domyślnym modelem wiąże w Web API nie wiąże obiekt jSON, kiedy to obiekt ma nazwany root.

Odpowiedz

5

transformRequest jest obsługiwany od AngularJS 1.1.2. Jeśli używasz wczesnej wersji, musisz dodać ją do $httpProvider.

+0

Yup - Myślałem, że mamy najnowszą wersję w naszej kompilacji, ale myliłem się. Dzięki! – Stuart

+0

Miałem ten sam problem - dzwoniłem. $ Zapisz na moim zasobie, ale ustawiłem parametr transformRequest na "create". – Ponny

Powiązane problemy