У меня есть этот код:
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);
}
});
}
Вызов AJAX выше возвращает:
[{
"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"
}]
Это отлично работает. Позже, хотя пользователь может добавить вложение, и вот где оно разрывается. Добавляя новое вложение в режим и отображая на странице, он удаляет все ранее загруженные элементы в attachmentsModel.convAttachments
.
Позже это происходит:
ko.mapping.updateFromJS(attachmentsModel.convAttachments, file);
Ajax Returns:
[{
"title": "eric_schmidt",
"added_by": "xxx",
"thumb": "xxxxxx",
"id": 417,
"link": "/link/417",
"added_on": "2011-02-22T13:16:45-08:00"
}]
Я надеюсь, что это дает четкое представление, если нет, пожалуйста, дайте мне знать. Любые идеи, почему knockoutjs убивает все, когда я использую updateFromJS
?