我对 Ext JS 3.4 有一些经验,我可以创建一个带有商店的 Dataview 并使用 tpl 来显示/渲染项目。
但我想要的是为 Ext Designer 中的布局创建一个项目渲染器(就像在 Flex 中一样)。并在 DataView 中重复此组件。我找不到有关 DataView 或 ListView 的项目渲染器的任何文档。
这个事情谁有经验?
问候,克里斯。
我对 Ext JS 3.4 有一些经验,我可以创建一个带有商店的 Dataview 并使用 tpl 来显示/渲染项目。
但我想要的是为 Ext Designer 中的布局创建一个项目渲染器(就像在 Flex 中一样)。并在 DataView 中重复此组件。我找不到有关 DataView 或 ListView 的项目渲染器的任何文档。
这个事情谁有经验?
问候,克里斯。
哟可以做这样的事情:
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/
我使用的是按钮组件,但您可以以同样的方式使用您自己的复杂组件。
祝你好运。