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?
datasource2 = clone(datasource);
datasource2.transport.read.url = "http://anotherSite"; // will not work, but this is the idea
here is my clone function:
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.");
}