Knockout mapping hacks
Problem
Some fields defined in viewModel but missed in data will be lost after using ko.mapping.
View model definition
var viewModel = { id: ko.observable(), name: ko.observable("name"), items: ko.observableArray() }; var data = { id: 1, items: [{text: "text", value: "value"}] }; ko.mapping.fromJS(data, {}, viewModel); console.log(ko.mapping.toJSON(viewModel));
Result
{"id":1,"items":[{"text":"text","value":"value"}]}
'name' field was missing.
var data = { id: 1, items: [{text: "text", value: "value"}] }; ko.mapping.fromJS(data, {include: Object.keys(viewModel)}, viewModel); console.log(ko.mapping.toJSON(viewModel));
Result
{"id":1,"name":"name","items":[{"text":"text","value":"value"}]}
Get correct viewModel after mapping.
Solution
var maping = { include: Object.keys(viewModel) }; ko.mapping.fromJS(data, mapping, viewModel);
https://jsfiddle.net/cvdex801/













