5

initComponent() 我在问题中创建的一些项目是,this.items以某种方式引用类变量,而不是实例变量。

所以当我创建两个实例时,我最终得到了两个按钮。

items: [],
initComponent: function() {
  this.items.push( { xtype: 'button', ... }) ;
  this.callParent( arguments );
}

由于我必须使用推送,因此每次推送新元素时。

是否有一些实例相当于this.items我可以在创建按钮之前修改定义,还是我必须手动检查重复项?

4

2 回答 2

7

你不应该return this.callParent( arguments );

就这样就足够了:

initComponent: function() {
    var me = this;
    me.items = { xtype: 'button', ... }; //Are you sure items is filled up here?
    me.callParent();
}

此外,如果您正在编写自己的“组件”并且想要在其中传递参数,Ext.create我总是执行以下操作:

constructor: function (config) {
    var me = this;
    Ext.apply(me, config); 
    me.callParent();
}

这将用您提交的项目声明覆盖您班级中的项目声明Ext.create()

于 2012-11-30T13:35:40.967 回答
1

您可以重载构造函数并在那里调整配置:

constructor: function(config)
{
  config.items.someButton = { xtype: 'button', ... };
  this.callParent([config]);
}
于 2012-11-30T13:19:39.607 回答