Как заставить can.Model отправлять данные JSON при обновлении?

У меня есть этот код:

var SotriesModel = can.Model.extend({
    findAll: 'GET /api/stories/',
    create: function(story) {
        console.log(story)
        return $.ajax({
            url: '/api/stories/',
            type: 'POST',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: JSON.stringify(story)
        });
    },
    update : function(story) {
        console.log(story)
        return $.ajax({
            url: '/api/stories/',
            type: 'PUT',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: JSON.stringify(story)
        });
    },
    destroy: 'DELETE /api/stories/{id}'
}, {});
var story = new SotriesModel({id:123123, name:"test"});
story.save();

То, что я ожидаю от сохранения, — это запрос PUT с JSON в полезной нагрузке, но я получаю только идентификационный номер:

123123

person nvcnvn    schedule 04.09.2013    source источник


Ответы (1)


подпись метода обновления для использования функции: can.Model.update: function(id, serialized) -> can.Deffered.

Таким образом, в качестве первого параметра вы всегда получаете идентификатор, а в качестве второго — сериализованные данные.

Замена update : function(story) {} на update : function(id, story) {} должна решить проблему.

person Daff    schedule 04.09.2013