プログラマとプロマネのあいだ

プログラマもやるし、プロマネもやるし、たまに似非アーキとか営業っぽいこともやる

Ext.data.FieldのConfig Option: convert

ストアを使ってリストのデータを構築している場合に、
データソースをそのまま使わず、加工してリストに見せたいというようなときに使えるらしい。


例えば以下のサンプルの場合、
元データは

["Hoge", "Moge"]

なんですが、リストに表示されるのは、

["convert/Hoge", "convert/Moge"]

になります。

Ext.setup({
    onReady : function() {
        Ext.regModel('Person', {
            fields: [
                {
                    name: 'name',
                    convert: function(v, rec) {
                        return "convert/" + v;
                    }
                }
            ]
        });

        new Ext.List({
            fullscreen: true, 
            tpl: '<tpl for="."><div class="person">{name} {value}</div></tpl>',
            itemSelector: 'div.person',
            singleSelect: true,
            store: new Ext.data.Store({
                model: 'Person',
                data: [
                    {'name': 'Hoge'},
                    {'name': 'Moge'}
                ],
                autoLoad: true
            })
        });
    }
});

ちなみに上のサンプルはdataを直接コード上で指定していますが、
Reader経由で読むと、二回convertメソッドが呼ばれるというバグが、
Sencha Touch 0.95にあるようです。
再現コードをポストしてみました。(これがきっかけでこの記事ができてるわけですが)

OPEN-272 Ext.data.Reader.extractData() broken in sencha-touch-beta-0.94?