2011-05-18 5 views
3

ExtJs 4を把握していて、グリッド上のダブルクリックイベントでモーダルウィンドウを表示している問題があります。私が構築するためにJavaScriptを生成するコードだとして が(私は親コンテナオブジェクトmyCmpを使用しました:グリッド・コンポーネントに定義されたExtJs 4 - Window.show() - ウィンドウのサイズが非常に小さい

リスナー:myCmpの

"listeners": { 
    "itemdblclick": function() { 
     var win =Ext.getCmp('myCmp'); 
     win.myWindow.show(); 
    } 
} 

以前に定義されたプロパティは、ウィンドウの成分であることがExtJSのコンフィグ)

myCmp.myWindow = Ext.create('Ext.window.Window',{ 
"layout": "fit", 
"items": [ 
....  
], 
"title": "Hello Window", 
"width": "300", 
"height": "300", 
"id": "myWindow" 
}); 

ロジックは、ウィンドウが)計6Px X計6Px(非常に小さく表示されている)私は(myCmp.myWindow)ウィンドウオブジェクトが存在して、グリッドをダブルクリックが、私はショー(呼び出すときに、よく働きます。

私はハンドラを変更した場合:

Ext.create('Ext.window.Window',{ 
"layout": "fit", 
"items": [ 
....  
], 
"title": "Hello Window", 
"width": "300", 
"height": "300", 
"id": "myWindow" 
}).show(); 

それは大丈夫動作します。明らかに、これは新しいウィンドウインスタンスを作成しています。

アイデア?私はこの権利をしていますか?あなたが直接あなたのウィンドウを参照することができたときに、事前に

おかげで

SAM

答えて

4

は、なぜあなたは「myCmp」を参照してくださいか?

var win = Ext.getCmp('myWindow'); 
win.show(); 

これは動作するはずです。また、なぜ他のウィンドウをインスタンス化してどこで使用するのですか?必要なときにインスタンスを作成し、使用後にインスタンスを破棄する方がよいでしょうか?

また、ウィンドウを正しく構成する必要があります。幅と高さは文字列ではなく数値フィールドです。オブジェクトを適切に設定する方法については、apiのドキュメントと例を参照してください。次のウィンドウを使用する必要があります。

Ext.create('Ext.window.Window',{ 
    layout: 'fit', 
    items: [ 
    ....  
    ], 
    title: 'Hello Window', 
    width: 300, 
    height: 300, 
    id: 'myWindow' 
}).show(); 
+0

高さと幅の文字列はタイプミスですが、実際の実装ではintを使用しています。返信の最初のメソッドはまったく同じ結果になりますが、使用するたびにウィンドウを作成して破棄しなければならないということです。私はExtJsの例を見てきましたが、ウィンドウオブジェクトをvarに保持して再利用するので、それがベストプラクティスと推測されました。 – sambomartin

+1

あなたはアブデルが弦であることを知っています、それは私が見ていた別の物体でした。謝罪、そして良い点。ありがとう。 – sambomartin

+0

破棄して再作成するかどうかはアプリケーションによって決まります。どのくらいの頻度でウィンドウを使用しますか?複雑さを軽減するためにウィンドウを表示するようにコードを修正しました。入力ミスによってエラーが修正されているはずです。 –

関連する問題