1

次のようなサービスがあります。

(function() {
'use strict';

angular
    .module('app.bookmark')
    .factory('bookmarkService', bookmarkService);

function bookmarkService($http){

        var url = 'api/bookmark';

        bookmarkService.update = function(bookmark){
            return $http.put(url + '/' + bookmark.id, bookmark);
        };

        return bookmarkService;

}})();

また、PUT メソッドでリクエストをインターセプトして、ID 属性なしでペイロードを送信したいと思います。これは、URL に属性が既にあるためです。

これらの関数を作成しました:

function httpInterceptor($q) {
    return {
        request : function(config) {
            if(config.method === 'PUT'){
                delete config.data.id;
            }
            return config || $q.when(config);
        }
    };
}

問題は、id属性が画面 (フォーム) で削除されていることです。ユーザーが同じレコードのデータを何度も変更して、永久に滞在したい状況を想定します。

4

1 に答える 1

2

元のオブジェクトを変更する代わりに、構成データのコピーを作成します。

function httpInterceptor($q) {
    return {
        request : function(config) {
            config = angular.copy(config);

            if(config.method === 'PUT'){
                delete config.data.id;
            }
            return config || $q.when(config);
        }
    };
}
于 2015-09-21T15:25:54.900 に答える