首页 > 解决方案 > ExtJS - 我怎样才能有多个组件作为父母?

问题描述

首先,我使用的 ExtJS 版本是4.2 版本

我有一个父组件,它有多个子组件(假设有 3 个子组件)从它扩展并因此对其进行修改。

我现在希望有一个新组件,它必须通过其他 3 个子组件之一(可以是其中任何一个),最后一个新组件调用的子组件将调用父组件。

解释这种情况有点困难,所以为了更好地可视化它,它会是这样的:

新组件_| > 子组件1 > | 父组件
______________| > 子组件2 > |
______________| > 子组件3 > |

父组件是子组件修改的简单弹出窗口。
新组件还旨在修改父弹出窗口,但它不能阻止子级也修改它。

如果我只有一个子组件,我会在新组件中简单地扩展它,仅此而已,但因为我有多个,我不确定最合适的行动方案应该是什么。

我想过尝试像动态扩展给定的孩子这样的事情,我不确定这是否可行。此外,在 Ext 中是否存在类似多个父母的情况?我是一个相对新手,所以我真的不知道。

任何帮助将不胜感激,如果您需要进一步澄清,请说出来。

标签: javascriptextjs

解决方案


我认为你应该重新考虑你的结构。
首先,您不能动态更改/设置类继承。但我认为你的问题比看起来更简单。
如果我没看错,你就有一个包含一些字段或信息的父窗口(模式)。如果您调用三个子类中的任何一个,它会覆盖/扩展该父类,这意味着您可以忘记它。现在您只处理选定的子类。
我猜您在基本级别、网格或面板上有某种视图,然后调用该子类的单击事件。

所以我认为你正在寻找的是这样的:

Ext.define('App.ParentModal', {...});
Ext.define('App.Child1', {
    extend: 'App.ParentModal',
    ...
});
Ext.define('App.MyPanel', {
    ...
    items:[
        {
           xtype: 'button',
           handler: function() {
               if (condition1) {
                   Ext.create('App.Child1');
                   // call child1 that modifies parent the way you want
                   return;
               }
               if (condition2) {
                   Ext.create('App.Child2');
                   // call child2 that modifies parent the way you want
                   return;
               }
           }
        }
    ],
    ...
});

我希望我能帮上忙。


推荐阅读