如何再次使用 ExtJs4 组件?

Posted

技术标签:

【中文标题】如何再次使用 ExtJs4 组件?【英文标题】:How can I use ExtJs4 Component again? 【发布时间】:2012-03-27 14:10:52 【问题描述】:

我问了很多问题,但没有人回答我...

请回答这个问题..

嗨,我是 Extjs4 的新手

我用的是 extjs4,

我制作一个组件,像这样

var child1 = Ext.create('Ext.form.Panel', 
                    xtype : 'panel',
                    title : 'child1',
                    html : 'child1'
                );

而且,我将它用于窗口 1,就像这样

var win1 = Ext.create('Ext.window.Window', 
                    title : 'window1',
                    height : 200,
                    width : 400,
                    layout : 'fit',
                    items : child1
                ).show();

我想使用'child1',另一个窗口,像这样

var win2 = Ext.create('Ext.window.Window',  // setting
            height : 200,
            width : 200,
            layout : 'fit',
            title : 'window2',
            items : child1
        ).show();

但这是错误的代码。

只能在 Window2 中看到。

但我想在 win1 和 win2 中都使用 'child1'...

我该怎么做?,谢谢!

【问题讨论】:

请从您的问题标题中删除 etxjs/extj4//。你不需要在标题中重复标签 贾斯汀在下面有正确的答案,这里是例子:jsfiddle.net/dbrin/N7Lkg 你的例子不起作用的原因是因为面板的 DOM 实际上被移动到了 window1 DOM,然后同一个面板 DOM 是再次移动到窗口 2 的内部...相反,您必须创建同一个 DOM 的两个实例才能显示在两个单独的浮动窗口中。 【参考方案1】:

如果您要重用组件,请创建视图并使用小部件分配别名。*

Ext.define('MyApp.view.Child1', 
    extend: 'Ext.panel.Panel',
    alias: 'widget.child1',
    html: 'child1'
);

然后,当您创建窗口时,您可以通过 xtype 引用。

var win1 = Ext.create('Ext.window.Window', 
    title : 'window1',
    height : 200,
    width : 400,
    layout : 'fit',
    items : [ xtype: 'child1']
).show();

【讨论】:

【参考方案2】:

你可以同时使用它们。但是 items 是数组 - 所以你需要将其更改为 items: [ child1 ]

【讨论】:

以上是关于如何再次使用 ExtJs4 组件?的主要内容,如果未能解决你的问题,请参考以下文章

在 extjs4.1 和 4.2 中使用 CheckboxModel 删除和添加 Gridpanel 再次失败

ExtJS4 - 响应式布局和组件

如何从 extjs4.1 中的应用程序控制器调用视图

Extjs4 RowEditing 的使用和更新方法

在 ExtJs4 中重命名组件的路径

Extjs4 常用布局总结