具有扩展类的多个实例的ExtJS继承问题

问题描述 投票:0回答:1

我有多种形式,所有形式都以相同的“通用”字段开头,但根据表单而具有不同的字段。因此,我有一个父表单,所有子表单都从中扩展。父表单添加了通用字段,因此我不必在子表单中重新声明这些字段。

我遇到的问题是,当我有多个相同子窗体的实例时,将为每个实例重新添加那些通用字段。听起来可能有些混乱,但是我认为以下提琴应该很清楚:https://fiddle.sencha.com/#fiddle/36lu&view/editor。显然我做错了,所以只是想弄清楚我做错了什么。

inheritance extjs extjs7
1个回答
0
投票

正确的方法可能不是inheritance,而是使用这些默认字段定义Panel,然后将其添加为子表单的最顶层项目;也可以用xtype完成。但老实说,为了简单起见,对于两个简单的文本字段,我什至都不会乱七八糟(嵌套这么小的位不会提高可读性)。如果要增加一些项目,增加一些复杂性,则嵌套它可能是一件事情。如果主要形式具有例如,在这种情况下使用继承会更有意义。子窗体也使用的自定义验证方法-但正如小提琴所示,当它具有UI组件时,其行为与扩展类时的行为类似。提示:ExtJS使将表单绑定到模型变得容易,否则可能会减少所需的代码量。


0
投票

您可以使用Ext.Array.merge(arr0,arr1 ..)方法。

Ext.define('TestParentForm', {
extend: 'Ext.form.Panel',
xtype: 'testparentform',
initComponent: function () {

    this.items = Ext.Array.merge(
        [{
            xtype: 'textfield',
            fieldLabel: 'Universal Parent Field'
        }],
        this.items
    );

    this.callParent(arguments);
}
});

https://fiddle.sencha.com/#fiddle/36lv&view/editor

© www.soinside.com 2019 - 2024. All rights reserved.