I made some changes in this script, does it help?
http://jsfiddle.net/3t4yA/1/
I also tried the mapping plugin, but it did'nt work as I was
excpected, so
I found this script from this forum and works very well.
function ApplyKo(input) {
for (var propIdx in input) {
if (isNaN(propIdx)) {
if ($.isArray(input[propIdx])) {
var arr = new Array();
for (var i = 0; i < input[propIdx].length; i++) {
arr.push(ApplyKo(input[propIdx][i]));
}
input[propIdx] = ko.observableArray(arr);
//console.log('Found Array: ' + propIdx);
} else if ($.isFunction(input)) {
//console.log('found function: ' + propIdx);
} else {
//console.log('apply KO to: ' + propIdx);
ApplyKo(input[propIdx]);
observable = ko.observable(input[propIdx]);
input[propIdx] = observable;
}
}
}
return input;
}
var viewModel = ApplyKo({... complex object ...});
//iterate through viewModel OrderLines array, and append to each
orderline custom helper property
ko.utils.arrayForEach(viewModel.OrderLines(), function(line){
line.editable=ko.observable(false);
});
viewModel.isModified = ko.observable(false);//another custom property
ko.applyBindings(viewModel);