DataSource transport.destroy вызывается +1 раз для каждого последующего удаления (вызывается для ранее удаленных элементов).

У меня есть DataSource в моем коде, который поддерживает destroy. Чтобы удалить объект из него, я напрямую вызываю remove, т.е.

myDataSource.remove(discardedData);

Я получаю поведение, подобное этому. Однако, в отличие от связанного потока, мой destroy не настроен на функцию, поэтому решение мне не помогает.

Мой источник данных (я включил все это на случай, если виновата какая-то моя конфигурация):

       var QueueMessages = {
        type: "aspnetmvc-ajax",
        transport: {
            read: {
                url: BASE_URL + "api/QueueMessages/GetMessagesHeaders",
                dataType: "json",
                type: "GET",
                beforeSend: function (req) {
                    req.setRequestHeader('Authorization', authService.getAuth());
                }
            },
            destroy: {
                url: BASE_URL + "api/QueueMessages/deleteMessage",
                dataType: "json",
                type: "DELETE",
                beforeSend: function (req) {
                    req.setRequestHeader('Authorization', authService.getAuth());
                }
            }
        },
        schema: {
            model: {
                id: "id",
                fields: {
                    profileName: { type: "string" },
                    queueType: { type: "string" },
                    acceptedAt: { type: "date" },
                    processedAt: { type: "date" },
                    BodyExcerpt: { type: "string" }
                }
            },
            total: "total",
            data: "data",
        },
        error: function (e) {
            //throw user back to login page
            if (e.errorThrown === "Unauthorized")
                $rootScope.$apply($location.path('/'));
        },
        requestStart: function () {
        },
        requestEnd: function () {
        },
        pageSize: 50,
        serverPaging: true,
        serverFiltering: true,
        serverSorting: true,
        serverGrouping: true,
        serverAggregates: true
    };

Я не могу найти никаких подсказок относительно того, почему это происходит.


person jajdoo    schedule 20.10.2014    source источник
comment
Проблема, вероятно, будет той же, что и в ссылке, на которую вы ссылаетесь: результат выполнения уничтожения не сообщает, что оно завершено правильно. Ваша служба должна возвращать соответствующий результат, чтобы сообщить destroy, что он действительно удален.   -  person OnaBai    schedule 21.10.2014


Ответы (1)


благодаря OnaBai я нашел проблему.

ознакомившись с RFC 7231, я изменил ответ http DELETE с 200 OK до 204 no content.

person jajdoo    schedule 21.10.2014