Посмотрите на this small example.Нокаут: частичное отображение массивов
<select data-bind="options: Days, optionsText: 'title'"></select>
<input type="button" value="update" data-bind="click: update" />
<script type="text/javascript">
var Days = {'Days': [{"id":1,"title":"Monday"},{"id":2,"title":"Tuesday"},{"id":3,"title":"Wensday"}]};
var DaysUpdate = {'Days': [{"id":3,"title":"Wednesday"},{"id":4,"title":"Thursday"},{"id":5,"title":"Friday"}]};
var mapping = {
'Days': {
key: function(data) {
return ko.utils.unwrapObservable(data.id);
}
}}
var viewModel = {
Days: ko.observableArray(),
update: function() {
ko.mapping.fromJS(DaysUpdate, mapping, viewModel);
}
}
ko.mapping.fromJS(Days, mapping, viewModel);
ko.applyBindings(viewModel);
</script>
В этом примере данные отображаются частично. Сначала из объекта Days, затем (нажав кнопку обновления) из объекта DateUpdate. Второе обновление удаляет объекты «Понедельник» и «Вторник» из массива. Как мне сделать это?
PS. Спасибо Марку Робинсону за лучший структурированный пример.
Эта скрипка демонстрирует вашу проблему. Возможно, другой пользователь SO может использовать его для предоставления решения. http://jsfiddle.net/unklefolk/PfFf9/1/ –
Отлично! Спасибо за скрипку. Я расскажу об этом в вопросе. – Dziamid
@Dziamid - я только что исправил небольшую опечатку в вашем коде, после отображения «Дни» было пространство, из-за чего ключ не использовался. Однако это не влияет на мой ответ. – madcapnmckay