と、いってみます。
小堤です。
あんまり記事を書くほどしゃきっとしてないので(もうろうとしてる)ちゃかちゃかと。
題名通りですが、Ext.extendを利用して、コンポーネントを継承して、オリジナルのコンポーネントを作ろう!と、まぁ開発する人ほとんどが思うでしょう。
いや、配布するとかじゃなくても、パネルクラスをそのまま使うことはまずないですし、とりあえず継承して・・・初期設定はクラス側に記述したい・・・。
と思うわけです。
で、「初期設定はクラス側に記述したい」が大いにはまる原因です。ExtJSのワークショップにきていただいている方の中でも数人はまってました。
まず、itemsはinitComponentでExt.applyを使って設定しようなんざしちゃいけません。
itemsだけじゃないんですが、リテラル以外は設定すべきではありません。オブジェクトとか。
で、ここまでは、ワークショップでもちらほら会話にでてたのですが・・・・。
リテラルでもだめなもんはだめ。
なんですよ・・・特にレイアウトがからんでくると生じます。よく使うボーダーレイアウトがいい例。
Viewportで、ボーダーレイアウトを指定して、その中で、collapsible:trueをinitComponent内で指定してみます・・・と。
いや、設定できてるんですよ・・・だけど、開閉時おかしくなります。この現象にはまった人たくさんいるんじゃないかな?
よく、おかしくなるんでやめたとかきくし。
new するところか、xtypeを指定するオブジェクトリテラルで指定することで、問題無く動作します。
なんだかなぁと思いますが、それがいやなら、継承したときに、コンストラクタ自体を記述して、親クラスコンストラクタを呼び出すで回避できそうです。(ためしてないんで)
だけど、このやり方、コンポーネントはコンストラクタかくんじゃねぇよ。っていうのがExtJS流儀っぽいです。
なんで・・・・外側で指定する・・・がいまのところいいかなぁ・・・なんだかなぁ・・・。
時間あるときゆっくり検証しますが・・・ちなみに、これはExt JS 3.0 alphaで試した結果です。
Pingback: web cameras download
Pingback: car carrier services