-1

我肯定会做一些我没有解决的错误。我有一个表单组件,其中包括几个文本字段、单选按钮以及窗口。如果我使用以下代码:

console.log(Discounts.getForm().getValues());

// Discount is form name which is defined like below
var Discounts = Ext.create('Ext.form.Panel', {
    ...
}

我可以看到除grid panel包含window组件之外的所有值(说实话,我看不到所有其他窗口值!)。

组件树如下:

+-- FORM PANEL ( layout card )
  |
  +-- CARD LAYOUT - 1
  | |
  | +- COMBOBOX
  | +- TEXTFIELD
  |
  +-- CARD LAYOUT - 2
  | |
  | +- WINDOW
  |  |
  |  +- GRID PANEL
  |
  +-- CARD LAYOUT - 3
  | |
  | +- RADIO GROUP

你知道我做错了什么吗?

例如,我想同时获取winArticle窗口字段值和Discount表单。

PS:代码非常大,所以我放了JSFiddle。

资源

4

1 回答 1

1

您在表单面板中有一个表单面板,通过给子表单面板一个 itemId 并使用组件查询,就像Discounts.down('#yourchildformpanelitemid').getValues()您可能会得到它的值一样......

但是,由于您的代码无法维护,我的建议是重构/重构您的代码并使用 MVC 结构。从煎茶:

大型客户端应用程序一直难以编写、难以组织和难以维护。当您向项目添加更多功能和开发人员时,它们往往会迅速失控。Ext JS 4 带有一个新的应用程序架构,它不仅可以组织您的代码,还可以减少您必须编写的数量。

您将需要重新构建代码并单独定义组件。这将使您的应用程序可维护。在您的情况下,您创建的表单面板将是一个单独的组件并拥有自己的控制器,因此您可以在其他地方使用相同的表单面板。

另外,请阅读 Sencha 中的以下文章,ExtJS 避免做法:
http ://www.sencha.com/blog/top-10-ext-js-development-practices-to-avoid/

这些技巧中的大多数(如果不是全部)都适用于您的代码。例如,您正在疯狂地嵌套组件。大多数嵌套是不必要的。例如:

...
items: [
    {
        xtype: 'form',
        items: new Ext.Panel({
            items: [
                {
                    xtype: 'fieldset',
                    ...

xtype: 'form'创建一个表单面板,为什么要在里面创建一个面板?

更多关于 ExtJS MVC 架构: http ://docs.sencha.com/extjs/4.2.0/#!/guide/application_architecture

于 2013-08-28T06:33:25.573 回答