我正在尝试动态地将列表(及其项目)添加到我的容器中。 而不是简单的HTML模板,我需要列表项来包含带有标题栏,图像和放大器的面板。更多的事情。
要做到这一点,我正在加载商店数据并在其回调中创建List&一系列的项目。然后我将项目添加到列表并列出到容器,但最终结果只是最后一个面板可见而不是所有面板的滑动列表。
这是我的代码:
var vLists = [];
this.load({
callback: function(records, operation, success) {
var hccontainer = Ext.getCmp('hccontainer');
this.each(function(record){
var sid = 'styleStore'+record.get('id');
var styleTemplate = eval('tpls.styleTemplate_' + record.get('id'));
vLists.push({
xtype: 'panel',
scrollable: 'false',
layout: 'fit',
cid : record.get('id'),
ctype : record.get('type'),
cname : record.get('name'),
stid : sid,
tp : styleTemplate,
items: [
{
xtype : 'titlebar',
title : record.get('name'),
docked : 'top',
cls : 'x-toolbar-transparent-top'
},
{
xtype : 'image',
src : record.get('image'),
}
]
});
});
//hccontainer.remove(Ext.getCmp('hc'), true);
Ext.getCmp('hc').destroy();
var hc1 = Ext.create('Ext.dataview.List', {
layout : 'fit',
config: {
direction: 'horizontal',
id : 'hc'
}
});
hc1.setItems(vLists);
Ext.getCmp('hccontainer').add(hc1);
},
scope: this
});
这是添加项目的正确方法,还是我遗漏了某些内容。
PS 如果我使用Carousel,而不是List,这可以正常使用
答案 0 :(得分:1)
Carousel是一个比List更多的布局组件。看起来你不需要使用列表,我没有看到任何项目点击的处理程序。如果您想避免使用模板,则不应使用List。而只是创建一个具有类似列表的布局的组件。我会使用一个带有vbox布局的容器,水平拉伸并具有静态高度。然后,您可以将所需的任何项目配置放入此中。