2013-08-29 35 views
6

tôi thêm một cặp của các hành động đến một tài nguyên AngularJS, nhưng khi tôi gọi hành động, chức năng transformRequest của tôi không nhận được gọi là:

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

Nếu tôi thêm chức năng trên toàn cầu về các ứng dụng, nó hoạt động:

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

những gì tôi cần làm là loại bỏ các phần tử gốc từ bất kỳ POST hoặc PUT hành động vì mô hình mặc định ràng buộc trong Api Web không ràng buộc một đối tượng json khi đối tượng đó có một gốc có tên.

Trả lời

5

transformRequest được hỗ trợ từ AngularJS 1.1.2. Nếu bạn sử dụng phiên bản ban đầu, bạn cần thêm nó vào $httpProvider.

+0

Yup - Tôi nghĩ rằng chúng tôi đã có phiên bản mới nhất trong bản dựng của mình, nhưng tôi đã sai. Cảm ơn! – Stuart

+0

Tôi đã có cùng một vấn đề - tôi đã gọi. $ Tiết kiệm tài nguyên của tôi nhưng đã được thiết lập transformRequest về 'tạo'. – Ponny

Các vấn đề liên quan