O uso de updateFromJS está substituindo valores quando deveria ser incluído.

Eu tenho este código:

var attachmentsModel = {
    convAttachments: ko.mapping.fromJS([])
};

$(function() {
    ko.applyBindings(attachmentsModel)
    refreshConvAttachments();
});

function refreshConvAttachments() {
    $.ajax({
        url: '/xxxxxxx/',
        success: function (dataJS) {
            // Send KO the data
            ko.mapping.updateFromJS(attachmentsModel.convAttachments, dataJS);
        }
    }); 
}

A chamada AJAX acima retorna:

[{
    "title": "BillGates",
    "added_by": "xxx",
    "thumb": "urlhere",
    "id": 410,
    "link": "/link/410",
    "added_on": "2011-02-22T12:57:09-08:00"
}, {
    "title": "biz-stone",
    "added_by": "xxx",
    "urlhere",
    "id": 411,
    "link": "/link/411",
    "added_on": "2011-02-22T12:57:53-08:00"
}]

Isso funciona bem. Mais tarde, embora o usuário possa adicionar um anexo, é aí que ele está se rompendo. Enquanto adiciona o novo anexo ao modo e é exibido na página, remove todos os itens carregados anteriormente noattachmentsModel.convAttachments.

Mais tarde, isso acontece:

ko.mapping.updateFromJS(attachmentsModel.convAttachments, file);

Retornos do Ajax:

[{
    "title": "eric_schmidt",
    "added_by": "xxx",
    "thumb": "xxxxxx",
    "id": 417,
    "link": "/link/417",
    "added_on": "2011-02-22T13:16:45-08:00"
}]

Espero que isso dê um passeio claro, se não, por favor me avise. Alguma idéia de por que knockoutjs é matar tudo quando eu usoupdateFromJS?

questionAnswers(2)

yourAnswerToTheQuestion