ども、小堤です。
さて、ちょっとコードばっかり書いてて、ちょっとつかれたのでブログを。めずらしい・・。
みなさんは、Ext JSのフィールドをレイアウトする場合、何にレイアウトしますか?Ext.form.FormPanelですか?Ext.Panelですか?サンプルは、FormPanelにレイアウトしていることが多いですね。これは、FormPanelのアイテムにフィールドを設定すると、フォームレイアウトでレイアウトされるからです。
では、Ext.Panelにレイアウトしてはいけないのでしょうか?
そんなことはありません。
Ext.Panelにレイアウトしてもかまいません。しかし、その場合、レイアウトも指定しないと、FormPanelに配置したようにはなりません。
layout: ‘form’
としてあげる必要があります。
さて、ここまでは超初心者でも知ってる話ですんで、どーでもいんですが。
注意すべき点があります。
Ext.Panelの初期xtypeはExt.Panelであるということと、レイアウトは、containerレイアウトである。という点です。
何が言いたいかというと。
Ext.Panel内のアイテムで次々レイアウトを切って、フィールドをぶっこんでいくと、全部パネルでレイアウトされるんですね。
そうした場合、まず、ボーダー引かれます。うざいです。背景色も指定されてしまいます。結論から言うと、大枠は、Ext.Panelでよいのですが、その中にcolumレイアウトなどをいれたりしてレイアウトを行う場合、必ずExt.Containerクラスをxtypeで指定するようにします。
こうすることで、フィールドのレンダリングスピードが向上します。
layout: ‘column’,
items: [{
xtype: ‘container’,
columnWidth: .5,
items: [{
xtype: ‘textfield’
}]
},{
xtype: ‘container’,
columnWidth: .5,
items: [{
xtype: ‘textfield’
}]
}]
ざっくりかくと上記のようになります。(インデントきいてませんがw)
Ext JSのレイアウトは、コンテナーに対して、ネストしながらレイアウトを行っていきますが、この枠がすべてExt.PanelになるかExt.Containerになるかで、パフォーマンスは結構違います。
また、Ext.Containerの場合、bodyが存在しないので、背景がきれいに透けます。なので、大枠で背景を指定して、ちゃんと透けてくれるわけですね。
余計なボーダー消したりとかのコードも必要ないですし、パフォーマンスもよいですし。
ホントは、もうちょいいろいろあるんですが、簡単なテクニックとして、レイアウトするときは、だまってExt.Containerを指定する。覚えておいておくといいですよ。
Pingback: Free Writing » xtypeにcontainerを指定した場合の描画速度
Pingback: cheap toms shoes,cheap toms,cheap toms shoe,discount toms shoes,discount toms,toms shoes,buy toms,toms shoes for sale,cheap toms shoes for sale,toms shoes outlet,toms shoes for sale,toms shoes,toms shoes outlet,toms shoes for sale,toms shoes cheap,toms sh