Knockout Mapping 2.1 Array Bug
HTML
<script src="https://raw.github.com/SteveSanderson/knockout/master/build/output/knockout-latest.js"></script>
<script src="https://raw.github.com/SteveSanderson/knockout.mapping/master/build/output/knockout.mapping-latest.js"></script>
<ul data-bind="foreach: Test.Items">
<li data-bind="text: Name"></li>
</ul>
<input data-bind="value: NewItem" />
<button data-bind="click: Add">Add</button>
<pre data-bind="text: JSON"></pre>
JavaScript
window.onerror = function(e, u, l) {
alert(e + "@" + l);
};
var data = {
Test: {
Items: [
{
Name: "Red",
Count: 0},
{
Name: "Green",
Count: 1}
]
},
NewItem: ""
},
counter = 0;
var vm = ko.mapping.fromJS(data, {
Items: {
create: function(options) {
options.data.Count = ++counter;
console.log("Create:", options.data);
return ko.mapping.fromJS(options.data);
},
update: function(options) {
options.data.Count = ++counter;
console.log("Update:", options.data);
return ko.mapping.fromJS(options.data);
}
}
});
vm.Add = function() {
vm.Test.Items.mappedCreate({
Name: vm.NewItem()
});
vm.NewItem(null);
};
vm.JSON = ko.computed(function() {
return JSON.stringify(ko.mapping.toJS(vm), null, 2);
}, vm);
ko.applyBindings(vm);