1

次のような extjs のモデルがあります。

Ext.define('Game', {
    extend: 'Ext.data.Model',
    fields: [
        { name: 'id', type: 'int' },
        { name: 'Name', type: 'string' },
        //{ name: 'levels' , type:'array'},
    ]
});

このモデルをグリッド ストアに使用したいのですが、その 3 番目のプロパティ

//{ 名前: 'レベル' , タイプ:'配列'}

グリッドの動的に作成された列に表示したいデータの配列です。おそらくextjsモデルの関連付けが解決策をもたらすかもしれないと思いますが、それらの使用方法が混乱しています。

4

2 に答える 2

9

type: 'auto' 設定を使用するだけで、配列は変更されません。

Ext.define('Game', {
    extend: 'Ext.data.Model',
    fields: [
        { name: 'id', type: 'int' },
        { name: 'Name', type: 'string' },
        { name: 'levels' , type:'auto'},
    ]
});

そして、次のようにレンダラーで列を定義できます。

columns: [
    {
        text: "ID",
        dataIndex: "id"
    },
    {
        text: "Name",
        dataIndex: "Name"
    },
    {
        text: "Array Item 1",
        dataIndex: "levels",
        renderer: function(value){
             return levels[0];
        }
    },
    {
        text: "Array Item 2",
        dataIndex: "levels",
        renderer: function(value){
             return levels[1];
        }
    }
]

配列内のアイテムごとに動的に列を追加したい場合は、実際には、どのレコードに最も多くのアイテムを含む配列があるかを把握し、必要な数の列を列配列に追加してから、グリッドの列を設定する必要があります。 .configure メソッドを使用します。これはおそらく、ストアのロード イベントで実行できます。

于 2013-03-04T21:12:23.793 に答える