0

ここに私のコードの短縮版があります:

Ext.define('MyApp.model.Folder', {
    extend: 'Ext.data.Model',
    fields: ['id', 'name']
});

Ext.define('MyApp.model.User', {
    ...,
    hasMany: { model: 'Folder', name: 'folders' }
});

var form = Ext.widget('form', {
    ...,
    items: {
        xtype: 'combo',
        name: 'folders',
        multiSelect: true,
        valueField: 'id',
        displayField: 'name',
        queryMode: 'local',
        store: 'Folders'
    }
});

User.load(1, {
    success: function (user) {
        form.loadRecord(user);
    }
});

User モデルによってロードされたデータ:

{
    ...,
    folders: [
        { id: 1, name: 'folder 1' },
        { id: 2, name: 'folder 2' }
    ]
}

すべて (ユーザー モデルとストア) が正常に読み込まれ、ストアにフォルダー 1、2、N が含まれていると仮定すると、loadRecordメソッドに渡された値 (フォルダー 1 と 2) をコンボで選択する必要がありますが、フィールドは空のままです。助けてくれてありがとう。

4

1 に答える 1

0

この質問を投稿した直後に解決策を見つけました。ただし、これは「ベストプラクティス」の一部であってはならないと思うので、より良いものを待って、ここに良い代替手段があります:

Ext.define('MyApp.model.User', {
    ...,
    hasMany: { model: 'Folder', name: 'folders' },
    fields: [..., {
        name: 'folders',
        convert: function (folders) {
            return Ext.Array.map(folders, function (folder) {
                return folder.id;
            });
        }
    }]
});
于 2013-01-23T17:13:47.080 に答える