これは、jsonファイルを使用して作成したいモデルです
Ext.define('Users', {
extend: 'Ext.data.Model',
fields: [{name: 'user_id', type: 'int'},
{name: 'user_name', type: 'string'}]
});
サーバーからのjson応答の内容に基づいて、このモデルを自動的に作成するにはどうすればよいですか?
これは、jsonファイルを使用して作成したいモデルです
Ext.define('Users', {
extend: 'Ext.data.Model',
fields: [{name: 'user_id', type: 'int'},
{name: 'user_name', type: 'string'}]
});
サーバーからのjson応答の内容に基づいて、このモデルを自動的に作成するにはどうすればよいですか?
metaData
モデルを自動的に作成するには、フィールドをJsonデータに含める必要があります。metaData
モデルのすべてのフィールドを記述するために使用できます。
ExtJS 4.1のドキュメント-Ext.data.reader.Jsonには、この機能の基本的な使用法を説明するResponseMetaDataというセクションがあります。
フィールドやフォーマットを使用してjsonをプルダウンし、そのフォーマットに非常に簡単に変換できるようにする必要があります。
モデルのフィールドを取得するには、サービスを呼び出します。最初にモデルサービスを呼び出し、その後に後続のステップを実行するチェーンを定義する必要がある場合があります。
ビルドモデルのフィールド配列とフィールドの結果は#1から得られます。#1の応答に基づいてデータを変換する必要がある場合があります。
var fields = response.fields;
ストアのコンストラクターのフィールドに基づいてモデルを定義する
var store = Ext.create('Ext.data.Store', {
constructor: function () {
var model = Ext.define("Users", {
extend: "Ext.data.Model",
fields: fields
});
this.model = model.$className;
this.callParent(arguments);
}
});
私はjsonファイルをロードして自動的に解析するjsonpのみを使用していますが、Ext.Ajaxもこれを行うかどうかはわかりません。
しかし、あなたはこのようなことをするでしょう:
Definition.json:
{
"name": "User",
"fields": [
{ "name": "user_id" , "type": "int" },
{ "name": "user_name", "type": "string" }
]
}
それをロードします:
Ext.Ajax.request({
url : "..../definition.json"
success: function( res ) {
Ext.define( res.name, {
extend: 'Ext.data.Model',
fields: res.fields
}, function() {
Ext.create( 'somestore', { model: res.name });
});
}
});