JSFiddle - React, Tailwind, and code Playground
HTML
<script src="//cdnjs.cloudflare.com/ajax/libs/knockout.mapping/2.3.5/knockout.mapping.js"></script>
<div data-bind="updateBinding: People.Records">
</div>
JavaScript
var data = new Array();
data[0] = {
"Records": [{
"Name": "Ludwig van Beethoven"
}, {
"Name": "Han Solo"
}]
};
ko.bindingHandlers.updateBinding = {
update: function (element, valueAccessor, allBindingsAccessor) {
alert("!");
}
};
var mapping = {
'Records': {
create: function (options) {
return new FamousPersonViewModel(options.data);
}
}
};
function FamousPersonViewModel(data) {
this.Name = ko.observable(data.Name);
}
function PeopleListViewModel() {
this.Records = ko.observableArray([]);
}
function MainViewModel() {
var self = this;
self.People = ko.observable(new PeopleListViewModel());
}
var viewModel = new MainViewModel();
// update binding fires once
ko.applyBindings(viewModel);
// update binding fires twice
ko.mapping.fromJS(data[0], mapping, viewModel.People);