This is a migrated thread and some comments may be shown as answers.

Cloning DataSource for multiple reads

1 Answer 361 Views
Data Source
This is a migrated thread and some comments may be shown as answers.
Dr.YSG
Top achievements
Rank 2
Dr.YSG asked on 03 May 2012, 08:37 PM
I have a clone function (shown below) for deep copying of objects. How could I clone a datasource object (like the one below) and then change the url and then re-use it for multiple Grids?

dataSource = new kendo.data.DataSource({
    type:"json",
    transport:{
        read:{
            dataType:"json"
        }
    },
    schema:{
        data:"results",
        total:"count"
    },
    error:function (e) {
        alert("fetch types error happened: " + e);
    }
});

datasource2 = clone(datasource);
datasource2.transport.read.url = "http://anotherSite";  // will not work, but this is the idea

here is my clone function:

function clone(obj) {
    var copy;
    // Handle the 3 simple types, and null or undefined
    if (null == obj || "object" != typeof obj) {
        return obj;
    }
    // Handle Date
    if (obj instanceof Date) {
        copy = new Date();
        copy.setTime(obj.getTime());
        return copy;
    }
    // Handle Array
    if (obj instanceof Array) {
        copy = [];
        var i;
        var len = obj.length;
        for (i = 0; i < len; ++i) {
            copy[i] = clone(obj[i]);
        }
        return copy;
    }
    // Handle Object
    if (obj instanceof Object) {
        copy = {};
        for (var attr in obj) {
            if (obj.hasOwnProperty(attr)) copy[attr] = clone(obj[attr]);
        }
        return copy;
    }
    throw new Error("Unable to copy obj! Its type isn't supported.");
}

1 Answer, 1 is accepted

Sort by
0
Dr.YSG
Top achievements
Rank 2
answered on 04 May 2012, 04:25 PM
Overnight, I realized that I had "brain freeze".

What I should be doing is created a javascript object that provides a "template" for creating a datasource, then cloning it with Jquery.extend and replacing the url for each use.

So I am closing this line of discussion.
Tags
Data Source
Asked by
Dr.YSG
Top achievements
Rank 2
Answers by
Dr.YSG
Top achievements
Rank 2
Share this question
or