1

我对 Ext JS 3.4 有一些经验,我可以创建一个带有商店的 Dataview 并使用 tpl 来显示/渲染项目。

但我想要的是为 Ext Designer 中的布局创建一个项目渲染器(就像在 Flex 中一样)。并在 DataView 中重复此组件。我找不到有关 DataView 或 ListView 的项目渲染器的任何文档。

这个事情谁有经验?

问候,克里斯。

4

1 回答 1

4

哟可以做这样的事情:

Ext.create('Ext.data.Store', {
    storeId:'simpsonsStore',
    fields:['name', 'email', 'phone'],
    data:{'items':[
        { 'name': 'Lisa',  "email":"lisa@simpsons.com",  "phone":"555-111-1224"  },
        { 'name': 'Bart',  "email":"bart@simpsons.com",  "phone":"555-222-1234" },
        { 'name': 'Homer', "email":"home@simpsons.com",  "phone":"555-222-1244"  },
        { 'name': 'Marge', "email":"marge@simpsons.com", "phone":"555-222-1254"  }
    ]},
    proxy: {
        type: 'memory',
        reader: {
            type: 'json',
            root: 'items'
        }
    }
});

Ext.create('Ext.grid.Panel', {
    renderTo: Ext.getBody(),
    height: 200,
    store: Ext.data.StoreManager.lookup('simpsonsStore'),
    columns: [{
        text: 'Name',
        dataIndex: 'name',
        renderer: theRender,
    }]
});

function theRender(value, id, record)
{
    var id = Ext.id();
    Ext.defer(myComponent, 10, this, [id, record.get('name')]);
    return '<div id="' + id + '"></div>';
}

function myComponent(id, value) {
    new Ext.Button({
        text: value,
        handler : function(btn, e) {
            alert('Hi ' + value);
        }
    }).render(document.body, id);
}​

这个想法是为每一行创建 div 元素并在这些元素中呈现您的组件。请在此处查看此工作示例:

http://jsfiddle.net/lontivero/p8qDL/

我使用的是按钮组件,但您可以以同样的方式使用您自己的复杂组件。

祝你好运。

于 2012-11-25T18:32:14.643 回答