/* * Extension to the knockoutjs mapping plugin * http://github.com/janhartigan/knockout-mapping-updatedata * Requires KnockoutJS and the mapping plugin * * Dual licensed under the MIT or GPL Version 2 licenses. * Jan Hartigan */ (function () { /** * A function that lets you "update from js" without overriding all the view model properties and methods. You just need to supply * the viewModel, the original JS model on which you based your data (typically what you'd use in the mapping fromJS method), and the new JS * object that has the updated information. * * @param Object viewModel * @param Object dataModel * @param Object jsObject * * @return Object (returns the viewModel) */ ko.mapping.updateData = function (viewModel, dataModel, jsObject) { if (arguments.length < 3) throw new Error("When calling ko.updateData, pass: the view model, the data model, and the updated data."); if (!viewModel) throw new Error("The view model is undefined."); for (var i in dataModel) { if (i in jsObject && i in viewModel && typeof dataModel[i] != 'function') { viewModel[i](jsObject[i]); } } return viewModel; } ko.exportSymbol('ko.mapping.updateData', ko.mapping.updateData); })();