将组件添加到容器中并不起作用

时间:2014-06-20 10:44:01

标签: javascript extjs

我几乎找不到一个更简单的例子,但由于一些未知的原因,我对这几行代码有疑问。我动态创建按钮并将它们添加到我的容器中。

我不知道为什么,但只添加了第一个按钮。请帮忙

代码:

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);

我创建了一个只有这个功能的新空白项目,它运行正常。我不知道在我现有的项目中可能导致这种情况。

1 个答案:

答案 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);