ko.mapping.fromJS example for model
ko.mapping.fromJS example for model (with observables and computed)
by jwstott
HTML
<script src="http://ajax.aspnetcdn.com/ajax/knockout/knockout-2.2.0.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/knockout.mapping/2.3.4/knockout.mapping.js"></script>
<span data-bind="text:firstName"></span>
<hr/>
<button data-bind="click: setBind">Set update</button>
JavaScript
var raw = {userName:'fred',firstName:'Smith', lastName:'Sansders'};
var Instructor = function (obj) {
var self = this;
self.id = ko.observable(); // teacher.Id guid;
self.studentIdentifier = ko.observable().extend({ required: true }); // teacher.TeacherID
self.userName = ko.observable().extend({ required: true });
self.organizationId = ko.observable();
self.organizationName = ko.observable().extend({ required: true });
self.firstName = ko.observable();
self.lastName = ko.observable();
self.middleInitial = ko.observable();
self.setBind = function() {
ko.mapping.fromJS(raw, {}, self);
};
//self.classes = ko.observableArray();
// computed
self.fullName = ko.computed(function() {
return this.firstName() + " " + this.lastName();
}, self);
self.socketId = ko.observable(); // socket.io socket.id
self.cacheArchive = [];
self.isBrief = ko.observable(true);
// IF AN OBJECT was passed then initialize properties from that object
if (obj) {
for (var prop in obj) {
if (self.hasOwnProperty(prop)) {
if (ko.isObservable(prop))
self[prop](obj[prop]);
else
if (!ko.isComputed(prop))
self[prop] = obj[prop];
}
}
}
return self;
};
var testA = new Instructor();
ko.applyBindings(testA);
testA.firstName('Jimbo');
console.log(ko.toJSON(testA));
//ko.mapping.fromJS(raw, {}, testA);
//console.log(ko.toJSON(testA));
//var testB = new Instructor(testA);
//console.log(ko.toJSON(testB));