2

私は Extjs 4.0.7 を使用しており、パネルを使用しています。そのパネル内で 2 つのタブを使用しています。各タブにはデータを挿入するためのフォームが含まれています。

dockedItemフォームごとに、同じコンポーネントを追加しましたid。ここから私の問題が始まり、サーバーからのエラーメッセージまたはフォームの検証エラーを表示するためにそのコンポーネントが追加されました。

そのフォームをウィンドウで 1 回だけ使用する場合は問題ありません。私はExt.getCmp('component-id');を使用しました。setErrorそのコンポーネントに。

ただし、アクティブなウィンドウで 2 つ以上のフォームを使用している場合、すべてのフォームが同じコンポーネントを使用するためform1form2エラーが表示されることがあります。fieldlid

getCmp()extjsでの使用を避けるようにする必要があることを読みました。

どうすればこの問題を解決できますか?

4

2 に答える 2

1

itemIdを使用します。itemIdは、コンテナ階層内で一意である必要があります。

Ext.require('*');

Ext.onReady(function() {

    new Ext.form.Panel({
        renderTo: document.body,
        width: 300,
        items: {
            xtype: 'textfield',
            fieldLabel: 'Field 1',
            itemId: 'field1'
        },
        tbar: [{
            text: 'Mark',
            handler: function(){
                this.up('form').down('#field1').markInvalid('Foo');
            }
        }]
    });

    new Ext.form.Panel({
        renderTo: document.body,
        width: 300,
        items: {
            xtype: 'textfield',
            fieldLabel: 'Field 1',
            itemId: 'field1'
        },
        tbar: [{
            text: 'Mark',
            handler: function(){
                this.up('form').down('#field1').markInvalid('Foo');
            }
        }]
    });

});
于 2013-03-20T12:37:28.970 に答える
0

フォームオブジェクトを作成している間、id を動的に渡して、異なるフォーム id を持つようにします。

コンポーネントクエリでも試すことができます。

于 2013-03-20T12:31:13.263 に答える