Knockout Mapping 2.1 Array Bug

by bmh_ca

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: 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 = {
    Items: [
        {
        Name: "Red",
        Count: 0},
    {
        Name: "Green"}
    ],
    NewItem: ""
},
    counter = 0;

var vm = ko.mapping.fromJS(data, {
        Items: {
            create: function(options) {
                options.data.Count = ++counter;
                console.log("Data:", options.data);
                return ko.mapping.fromJS(options.data);
            }
        }
});

vm.Add = function() {
    vm.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);