Skip to content

Instantly share code, notes, and snippets.

@mcintyre321
Created May 6, 2015 15:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mcintyre321/1c8494c3cb429bfb90a6 to your computer and use it in GitHub Desktop.
Save mcintyre321/1c8494c3cb429bfb90a6 to your computer and use it in GitHub Desktop.
Knockout observify
var observify = function (obs, top) {
if (!top && !ko.isObservable(obs)) {
return;
}
var object = ko.unwrap(obs);
if (Object.prototype.toString.call(object) === "[object Array]") {
for (var i = 0; i < object.length; i++) {
var v = object[i];
if (!ko.isObservable(v)) {
if (Object.prototype.toString.call(v) === "[object Array]") {
object[i] = ko.observableArray(v);
} else {
object[i] = ko.observable(v);
}
observify(object[i]);
}
}
} else {
for (var k in object) {
var v = object[k];
if (!ko.isObservable(v)) {
if (Object.prototype.toString.call(v) === "[object Array]") {
object[k] = ko.observableArray(v);
} else {
object[k] = ko.observable(v);
}
observify(object[k]);
}
}
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment