-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 プラクティスをお読み
ください。

これらのヒントのほとんど (すべてではないにしても) は、コードに適用できます。たとえば、狂ったようにコンポーネントをネストしています。ネストのほとんどは不要です。例えば:

...
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 に答える