mapping plugin
https://groups.google.com/d/topic/knockoutjs/wqLIB8H_pZ8/discussion
HTML
<script src="http://github.com/downloads/SteveSanderson/knockout/knockout-2.1.0.js"></script>
<script src="https://raw.github.com/SteveSanderson/knockout.mapping/master/build/output/knockout.mapping-latest.debug.js"></script>
<ul data-bind="template: { foreach: items }">
<li><span data-bind="text: jobTitle"></span></li>
</ul>
<button data-bind="click: update">Update</button>
JavaScript
var data = [{"jobTitle":"Digital designer","dateCreated":"7/7/2012","timeCreated":"2:27 PM","location":"Perth","jobSummary":"one\ntwo\nthree","Uri":"/candidates/view-all-jobs/digital-designer/","CreateDate":"\/Date(1341635236000)\/"},{"jobTitle":"Presentation Specialist - desktop publisher","dateCreated":"7/7/2012","timeCreated":"2:26 PM","location":"Brisbane","jobSummary":"One-to-one support to VP\n Truly diverse role\n Very satisfying amount of autonomy and responsiblity!","Uri":"/candidates/view-all-jobs/presentation-specialist-desktop-publisher/","CreateDate":"\/Date(1341635201000)\/"},{"jobTitle":"Administration Manager","dateCreated":"7/7/2012","timeCreated":"2:23 PM","location":"Melbourne North Shore & Northern Beaches ","jobSummary":"One-to-one support to VP\n Truly diverse role\n Very satisfying amount of autonomy and responsiblity!","Uri":"/candidates/view-all-jobs/administration-manager/","CreateDate":"\/Date(1341634991000)\/"}];
var newdata = [{"jobTitle":"Sean designer","dateCreated":"7/7/2012","timeCreated":"2:27 PM","location":"Perth","jobSummary":"one\ntwo\nthree","Uri":"/candidates/view-all-jobs/digital-designer/","CreateDate":"\/Date(1341635236000)\/"}];
//for efficiency create this function once
var fullDate = function() {
return this.dateCreated() + " " + this.timeCreated();
};
var mappingOptions = {
create: function(options) {
var result = ko.mapping.fromJS(options.data);
result.fullDate = ko.computed(fullDate, result);
return result;
}
};
var viewModel = {
items: ko.mapping.fromJS(data, mappingOptions),
update: function() {
ko.mapping.fromJS(newdata, viewModel.items);
}
};
ko.applyBindings(viewModel);