我正在尝试在覆盖中访问表单的组件以自定义它们。我已确认itemId == 'name'
或itemId == 'description'
,但此代码仅提取undefined
。
Ext.define('Products.overrides.view.NewProduct', {
override: 'Products.view.NewProduct',
initComponent: function() {
// Set up first
this.callParent([]);
// Revise the maximum lengths
this.getComponent('name').maxLength = 50;
this.getComponent('description').maxLength = 250;
}
});
name
和description
的类型是单行文本条目,但它们可能会更改为其他内容。我已经尝试了各种方法来获得这些组件但没有成功。我看过query
建议,但我可能无法保证组件类型,所以不确定这是否有用。
这应该不是那么困难,有什么我想念的吗?
答案 0 :(得分:1)
您可以使用以下方法检索:
val components = this.query('*[itemId=name]');
然后作为第一个元素访问:
components[0].maxLength = 50;
星号可以让您与任何组件类型匹配。您可能想要检查数组的长度。如果它不止一个,则项目ID不是唯一的。
答案 1 :(得分:-1)
如果要覆盖initComponent函数,则必须调用callParent()
函数。
Ext.define('Products.overrides.view.NewProduct', {
override: 'Products.view.NewProduct',
initComponent: function() {
// Set up first
this.callOverridden();
// Revise the maximum lengths
this.getComponent('name').maxLength = 50;
this.getComponent('description').maxLength = 250;
this.callParent();
}
});
ExtJS 5.0文档:http://docs.sencha.com/extjs/5.0/5.0.0-apidocs/#!/api/Ext.Component-method-initComponent