我对Ext JS 3.4有一些经验我可以创建一个带有存储并使用 tpl 来显示/呈现项目的数据视图。
但是我想要的是为布局创建一个项目渲染器(就像在 Flex 中一样)在分机设计器中。并在数据视图中重复此组件。我找不到有关数据视图或列表视图的项目呈现器的任何文档。
有人有这方面的经验吗?
问候克里斯。
Yo 可以做这样的事情:
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/
我正在使用按钮组件,但您可以以相同的方式使用自己的复杂组件。
祝你好运。