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

オブジェクトに名前付きルートがある場合、Web Api の既定のモデル バインディングは json オブジェクトをバインドしないため、POST または PUT アクションからルート要素を削除する必要があります。

4

1 に答える 1