我几乎找不到一个更简单的例子,但由于一些未知的原因,我对这几行代码有疑问。我动态创建按钮并将它们添加到我的容器中。
我不知道为什么,但只添加了第一个按钮。请帮忙
代码:
var buttonCount = this.getFoldersContainer().query('button').length;
var button = Ext.create('Ext.button.Button');
button.id = 'folderButton' + record.get('id');
button.setText(record.get('name') + " >>");
console.debug('count');
console.debug(buttonCount);
this.getFoldersContainer().insert(buttonCount,button);
我创建了一个只有这个功能的新空白项目,它运行正常。我不知道在我现有的项目中可能导致这种情况。
答案 0 :(得分:1)
首先,您应确保所有按钮都获得应用程序范围内的唯一ID!
接下来是id应该在按钮的构造时间出现(在你的情况下,它不是关键,但我推荐它)。当你说add()
会在开头插入时,没有任何意义,因为它总是在最后插入!
// ....getFoldersContainer().query('button').length; // count all the items!!
// you may do a check if the id is unique while debugging
if(Ext.getCmp('folderButton' + record.get('id')) != null)
console.error('Id duplicated! >> ','folderButton' + record.get('id'))
var ct = this.getFoldersContainer(),
itemCount = ct.items.getCount(),
button = Ext.create('Ext.button.Button', {text:record.get('name') + " >>",id:'folderButton' + record.get('id')});
ct.insert(itemCount > 0 ? --itemCount : itemCount ,button);
// if you just want to insert at the end you will be fine with
// ct.add(button);