Вот пример, который показывает настройки, как ваш массив создание и определение ключа для него, так что вы можете применить обновления с помощью отображения плагина: http://jsfiddle.net/rniemeyer/LHeQZ/
var data = [
{ id: 1, first: "Bob", last: "Smith" },
{ id: 2, first: "Jim", last: "Jones" },
{ id: 3, first: "Delete", last: "Me" }
];
var updatedData = [
{ id: 1, first: "Robert", last: "Smith" },
{ id: 2, first: "James", last: "Jones" },
{ id: 4, first: "New", last: "Guy" }
];
var Person = function(data) {
this.id = data.id;
this.first = ko.observable(data.first);
this.last = ko.observable(data.last);
this.full = ko.computed(function() {
return this.first() + " " + this.last();
}, this);
};
var dataMappingOptions = {
key: function(data) {
return data.id;
},
create: function(options) {
return new Person(options.data);
}
};
var viewModel = {
people: ko.mapping.fromJS([]),
loadInitialData: function() {
ko.mapping.fromJS(data, dataMappingOptions, viewModel.people);
},
loadUpdatedData: function() {
ko.mapping.fromJS(updatedData, dataMappingOptions, viewModel.people);
}
};
ko.applyBindings(viewModel);
Итак, в этом примере вы говорите, что ключ - это все данные? Я думал, что вам нужно пройти в какой-то «предмет», чтобы сделать это. Это действительно впечатляющий материал, я не представлял, как это выглядит. Им нужен такой пример на сайте, или вы должны добавить его в KnockMeOut :). – farina
Может быть, ключ становится data.id? При отладке моего решения похоже, что это может быть так. – farina
В этом случае функция 'key' возвращает' data.id'. Это помогает? –