1

JayData エンティティ モデルとコンテキストを動的に作成することは可能ですか? そしてそれらを使用するには?

Ajax 呼び出しを行ってから、次のことを行います。

function prepareEntityModel(json)
{
    // var entity = {
    //  Id: { type: "int", key:true },
    //  Name: { type: "string" },
    // });

    $data.Entity.extend("someData" + id, entity);
}

次に、コンテキストを作成しようとします。驚いたことに、これはうまくいくように見えました:var t= "someData" + 81

function createContext(t)
{
    $data.EntityContext.extend(t + "Context", {
        t: { type: $data.EntitySet, elementType: t },
    });

    var fn = eval(t + "Context");

    var context = new fn({
        name: "webSql",
        databaseName: "aDB"
    });

    return context;
}

onReady()コンテキストはイベントに応答するようです。ただし、テーブルは「t」という名前で作成されます。この時点で、私は本質的に推測に頼っています。コンテキスト内では、次の通常のルートを介してデータにアクセスできませんcontext["someData" + id).addMany(data);

JayData を使用してから 24 時間も経っていないため、用語が無意味である場合は申し訳ありません。

4

1 に答える 1

1

型を宣言すると、次のように型定義が返されます

 var mytype = $data.Entity.extend("someData" + id, entity);
 var newInstance = new mytype();

コンテキストを宣言すると、コンテキスト定義も返されます。eval() は必要ありません。

var contexttype = $data.EntityContext.extend(t + "Context", {...
var context = new contexttype({...

テーブル名は、「tableName」パラメーターを使用して指定するか (より簡単)、エンティティセットに適切な名前を付けることで (より難しく)、次のように指定できます。

var contextDef = {};
contextDef[t] = { type: $data.EntitySet, elementType: t };
var fn = $data.EntityContext.extend(t + "Context", contextDef);

これがお役に立てば幸いです。ここまたはフォーラムでさらに質問することを躊躇しないでください。問題が発生した場合の最善の方法は、問題を示す小さな jsfiddle を作成することです。

于 2013-04-16T13:02:26.853 に答える