Skip to content

Instantly share code, notes, and snippets.

@mcintyre321
Created May 6, 2015 15:18
Show Gist options
  • Select an option

  • Save mcintyre321/1c8494c3cb429bfb90a6 to your computer and use it in GitHub Desktop.

Select an option

Save mcintyre321/1c8494c3cb429bfb90a6 to your computer and use it in GitHub Desktop.

Revisions

  1. mcintyre321 created this gist May 6, 2015.
    31 changes: 31 additions & 0 deletions gistfile1.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,31 @@
    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]);
    }
    }
    }
    };