3

これは、jsonファイルを使用して作成したいモデルです

Ext.define('Users', {
    extend: 'Ext.data.Model',
    fields: [{name: 'user_id',  type: 'int'},
    {name: 'user_name',  type: 'string'}]
});

サーバーからのjson応答の内容に基づいて、このモデルを自動的に作成するにはどうすればよいですか?

4

3 に答える 3

4

metaDataモデルを自動的に作成するには、フィールドをJsonデータに含める必要があります。metaDataモデルのすべてのフィールドを記述するために使用できます。

ExtJS 4.1のドキュメント-Ext.data.reader.Jsonには、この機能の基本的な使用法を説明するResponseMetaDataというセクションがあります。

于 2012-06-13T14:40:22.320 に答える
3

フィールドやフォーマットを使用してjsonをプルダウンし、そのフォーマットに非常に簡単に変換できるようにする必要があります。

  1. モデルのフィールドを取得するには、サービスを呼び出します。最初にモデルサービスを呼び出し、その後に後続のステップを実行するチェーンを定義する必要がある場合があります。

  2. ビルドモデルのフィールド配列とフィールドの結果は#1から得られます。#1の応答に基づいてデータを変換する必要がある場合があります。

    var fields = response.fields;

  3. ストアのコンストラクターのフィールドに基づいてモデルを定義する

    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);
        }
    });
    
于 2012-06-13T14:13:50.247 に答える
2

私は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 });
    });
  }
});
于 2012-06-13T14:29:25.270 に答える