1

フォーム変数をウィンドウに渡しており、レコードはグリッド/ストアから入力されています。コードは次のとおりです。

{
    tooltip: 'Edit', 
    handler: function(grid, rowIndex, colIndex){
        var rec=grid.getStore().getAt(rowIndex); 
        var edit_app=Ext.create('Ext.Window',{ 
            title: 'Edit Applicant: ' + rec.ge('app_name'),
            items:[app_form],
            buttons:[{
                text: 'Update',
                handler:function(){
                    if(edit_app.down('form').getForm().isValid()){ //or  app_form.getForm().isValid(
                        edit_app.down('form').getForm().submit({ 
                             url: 'api/api.php',
                             waitMsg: '..submitting',
                             success: function(form,actns){
                                 edit_app.hide();
                             },
                             failure: function(fomr,actnz){
                                 alert('Error with submission');
                                 edit_app.close();
                             }
                         });
                    }
                }
            }, {
                text: 'Close', 
                handler: function(){
                    edit_app.hide();
                }
            }]
        }).show();

        var form = edit_app.down('form').getForm(); //app_form.getForm()
        form.loadRecord(rec);
    }
}

初めてフォームに入力すると、更新が正常に送信されますが、2回目に同じ操作を実行すると、次のメッセージが表示されます。

me.getRenderTarget(...)。domは未定義です

targetNodes = me.getRenderTarget().dom.childNodes,

私は解決策をグーグルで調べようとしましたが、今まで成功しませんでした。ヘルプは高く評価されます

4

1 に答える 1

0

問題は、ハンドラーが呼び出されるたびに「Ext.create」を使用して新しいウィンドウオブジェクトを構築し、フォームを変数参照として渡し、「hide」と「close」を使用していることである可能性があります。フォームが完成しました。Extが元のオブジェクトにアクセスしようとして、子オブジェクトが見つからないため、多くの競合が発生する可能性があります。これは、エラーのように見えます。フォームは引き続き元のオブジェクトに関連付けられているか、ウィンドウセレクターが元のウィンドウを取得している可能性があります。元のウィンドウにはフォームがありません。いずれにせよ、Extのセレクターは混乱しています。

これをテストするには、Window createをハンドラーの外に移動して、「myWindow.show()」とフォームの入力コードを呼び出してみてください。

于 2012-12-10T03:49:28.247 に答える