0

ケースを使用してオブジェクトを返す関数があります

    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 ....を関数として返し、オブジェクトの新しいインスタンスではありません。

このコードをコード分離用のメインの.htmlページとは別の.jsファイルに入れたいので、スイッチ関数を呼び出せるようにしたいと思います。では、上記の関数GetModelをvar =kendoui.data.model...が機能しているのと同じように動作させるにはどうすればよいでしょうか。

ありがとう、

ダン

4

1 に答える 1

2

関数で new 演算子を使用しないでください。

関数が次のようなインスタンスを返すようにするだけです。

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"))();
于 2013-01-06T21:52:00.543 に答える