1

新しい要素を追加するためのボタンと、要素を編集するための行に別のボタンがあるテーブルがあります。これらのアクションは同じフォームを共有しますが、編集モードでフォームが入力されるという唯一の違いがあります。ユーザーがボタンをクリックすると、新しいウィンドウにフォームが表示されます。

たとえば、新しい要素を追加するためにボタンを初めてクリックすると、正常に機能します。フォームが表示されます。しかし...ウィンドウを閉じてユーザーを編集しようとすると、コンテンツのない奇妙なウィンドウが表示され、「TypeError: b is null」というエラーが表示されますフォームの定義に問題がありますか? ウィンドウでフォームインスタンスが削除されているのではないでしょうか?

私はvarで定義されたフォームを持っています:

var formPanel =  Ext.create('Ext.form.Panel',{
     extend: 'Ext.form.Panel',
     id: 'policyForm',
     ...

グリッドの tbar に、ユーザーを追加するためのウィンドウを表示するためのボタンと、その行を編集するための別のボタンがあります。これはボタンのハンドラです:

handler : function(){
    Ext.create('Ext.window.Window',{
        layout: 'fit',
        title: 'New Policy',
        items: [formPanel],
        width: 650,
        height: 500,
        id: 'myPolicyWindow'
    }).show();
}
4

2 に答える 2

2

idPanel および Window コードで設定した が原因で、異なるウィンドウで同じフォームを再利用できない可能性が非常に高いです。idID は一意である必要があるため、このような問題が発生する可能性があるため、Ext コンポーネントでプロパティを使用しないようにする必要があります。itemIdプロパティを と組み合わせて使用​​すると、Ext.ComponentQueryを使用せずにコンポーネントへの参照を取得できますExt.getCmp(compId)

于 2013-07-01T13:08:48.640 に答える