我有一个使用case返回对象的函数
function GetModel(mymodel){
var mydatamodel = null;
switch(mymodel)
{
case 'Contact':
mydatamodel = kendo.data.Model.define({
id: "__KEY",
fields: {
__KEY: { type: "string" },
__STAMP: { type: "number" },
ID: { editable: false, nullable: true },
firstName: { type: "string" },
middleName: { type: "string" },
lastName: { type: "string" }
}
});
break;
case 'Address':
mydatamodel = kendo.data.Model.define({
id: "__KEY",
fields: {
__KEY: { type: "string" },
__STAMP: { type: "number" },
ID: { editable: false, nullable: true },
street: { type: "string" }
}
});
break;
case 'ContactType':
mydatamodel = kendo.data.Model.define({
id: "__KEY",
fields: {
__KEY: { type: "string" },
__STAMP: { type: "number" },
ID: { editable: false, nullable: true },
name: { type: "string" }
}
});
break;
};
return mydatamodel
};
//Try to create new instance
var mymodel = new GetModel("Contact")
现在这个函数确实返回了一个对象但该对象与它不一样 使用下面的代码创建一个我需要的新对象
var mydatamodel = kendo.data.Model.define({
id: "__KEY",
fields: {
__KEY: { type: "string" },
__STAMP: { type: "number" },
ID: { editable: false, nullable: true },
firstName: { type: "string" },
middleName: { type: "string" },
lastName: { type: "string" }
}
});
//Create new object;
var mymodel = new mydatamodel();
这可以按预期工作并创建kendoui.datamodel的新实例 该函数返回kendoui.data.modal ....作为函数而不是对象的新实例
我希望能够调用switch函数,因为我希望这个代码在一个不同的.js文件中,然后是主要的.html页面,用于代码分离。怎么会 我开始使用上面的函数GetModel以与之相同的方式执行 var = kendoui.data.model ...正在运作
谢谢,
丹
答案 0 :(得分:2)
请勿在您的功能上使用新操作符。
只需让函数返回这样的实例:
function GetModel(mymodel){
var mydatamodel = null;
switch(mymodel)
{
case 'Contact':
mydatamodel = kendo.data.Model.define({
id: "__KEY",
fields: {
__KEY: { type: "string" },
__STAMP: { type: "number" },
ID: { editable: false, nullable: true },
firstName: { type: "string" },
middleName: { type: "string" },
lastName: { type: "string" }
}
});
break;
case 'Address':
mydatamodel = kendo.data.Model.define({
id: "__KEY",
fields: {
__KEY: { type: "string" },
__STAMP: { type: "number" },
ID: { editable: false, nullable: true },
street: { type: "string" }
}
});
break;
case 'ContactType':
mydatamodel = kendo.data.Model.define({
id: "__KEY",
fields: {
__KEY: { type: "string" },
__STAMP: { type: "number" },
ID: { editable: false, nullable: true },
name: { type: "string" }
}
});
break;
};
return new mydatamodel();
};
使用你的创作者功能:
var mymodel = GetModel("Contact");
修改
或者使用这样的代码:
var mymodel = new (GetModel("Contact"))();