ExtJS 继承配置

ExtJS inherit config

在 ExtJS 6.2 中,subclasses 是否继承父配置?

它似乎不适合我。

Ext.define('test1', {
    config: {
        test1: {
            test1: ''
        }
    },

    constructor(config) {
        Ext.apply(this, config);

        console.log(config);
    },
});

Ext.define('test2', {
    extend: 'test1',

    config: {
        test2: ''
    },

    constructor(config) {
        this.callParent(config);

        console.log(this.config);
    },
});

Ext.create('test2', {
    test1: {
        test1: 'test1'
     },
     test2: 'test2'
});

而且在父构造函数上 config 似乎是 undefined!

我希望在父 class 配置中定义的所有内容在子 class 中也可用。并且能够在创建子 class.

时设置父配置

Fiddle: https://fiddle.sencha.com/#view/editor&fiddle/3fud

一种解决方法是调用 Ext.apply(this, config); 不确定这是否是正确的解决方案。

Ext.define('test2', {
    extend: 'test1',

    config: {
        test2: ''
    },

    constructor(config) {
        this.callParent(config);

        Ext.apply(this, config);  // <-

        console.log(this.config);

        console.log(this.getTest1());
        console.log(this.getTest2());
    },
});

您必须初始化配置才能获取 ExtJS 典型配置。您在 test2.

中获得了所有配置
Ext.define('test1', {
    config: {
        test1: null
    },

    constructor(config) {
        this.initConfig(config);

        return this;
    }
});

Ext.define('test2', {
    extend: 'test1',

    config: {
        test2: ''
    },

    constructor(config) {
// == > config

        this.callParent([config]);

// ==> her you can even use getTest1(), setTest1() (or test2)
    }
});

Ext.create('test2', {
    test1: {
        test1: 'test1'
    },
    test2: 'test2'
});