Object mapping plugin for Knockout
Official documentation here.
bower install bower-knockout-mapping --save
npm install knockout-mapping --save
var data = {
email: 'demo@example.com',
name: 'demo',
addresses: [
{ type: 'home', country: 'Romania', city: 'Cluj' },
{ type: 'work', country: 'Spain', city: 'Barcelona' }
]
};
// Create a view model from data
var viewModel = ko.mapping.fromJS(data);
// Now use the viewModel to change some values (properties are now observable)
viewModel.email('demo2@example.com');
viewModel.name('demo2');
viewModel.addresses()[0].city('Bucharest');
// Retrieve the updated data (as JS object)
var newData = ko.mapping.toJS(viewModel);
// newData now looks like this
{
email: 'demo2@example.com',
name: 'demo2',
addresses: [
{ type: 'home', country: 'Romania', city: 'Bucharest' },
{ type: 'work', country: 'Spain', city: 'Barcelona' }
]
}
Run this example in JSFiddle.
Unless CI
environment variable is defined, the tests use the latest version Knockout.