ExtJSで楽しくRIA業務アプリ開発

株式会社sus4 開発チーム

ExtJS入門5 xtypeを使ってパネルを作る。

5件のコメントがあります

このエントリーを含むはてなブックマークはてなブックマーク - ExtJS入門5 xtypeを使ってパネルを作る。 この記事をクリップ!Livedoorクリップ - ExtJS入門5 xtypeを使ってパネルを作る。 Yahoo!ブックマークに登録 BuzzurlにブックマークBuzzurlにブックマーク このエントリをつぶやくこのWebページのtweets Share on Tumblr FC2ブックマークへ追加 newsing it! この記事をChoix! Googleブックマークに追加 Bookmark this on Delicious Digg This

xtypeでパネルのタイプを定義する
ViewportのitemsのようにExt.Componentのサブクラス(Ext.Panelなど)を与えるときに、インスタンスを直接渡すのではなく、オブジェクト・リテラルを記述して渡すことができます。

オブジェクトリテラルについてはこちらで詳しく解説されています。
http://builder.japan.zdnet.com/sp/javascript-kickstart-2007/story/0,3800083428,20365303,00.htm

ECMAScriptにおける「オブジェクトリテラル」と言う書式に基づいています。「オブジェクトリテラル」は、次のように定義されています。
「{ }」(中括弧)で囲み、中にプロパティをカンマ区切りで複数記述できる。
プロパティは、「プロパティ名 : 値」と言う形式で記述する。
プロパティ名は、識別子/文字列/数値。
値は、代入式の右辺と成り得る式。

ExtJSでコードを少し書いている人にはおなじみの書式ですね。「{}」でかこって、キーと値を設定していくやり方です。

パネルをオブジェクトリテラルで作る場合の基本的な書式はExt.Panelを作るのと同じで。


{
    id:'newPanel',
    xtype:'panel',
    title:'New Panel',
    html:'<p>パラグラフ</p>',
}

上のコードで生成されるパネルは下のようにパネルを作るのとほぼ同じ結果になります。


new Ext.Panel({
    id:'newPanel',
    title:'New Panel',
    html:'<p>パラグラフ</p>',
});

xtypeに’panel’を指定しています、これでExt.Panelを生成します。
自分でつくったクラスを使う場合は、xtypeに登録してからでなければxtypeで指定できない。Ext.regを使って登録します。ただしどんな名前でも登録できるので、既にxtypeとして登録してある名前を指定しないように注意。

デフォルトで定義ずみxtypeの一覧
ExtJSのAPIリファレンスのExt.Componentのページへ行くと、定義済みのxtypeの一覧が載っています。
http://extdocs.xenophy.com/?class=Ext.Component
またExt.ComponentのサブクラスのAPIリファレンスへ行くと,そのクラスのxtypeが何か表示されています。
xtype

遅延レンダリング(Lazy-Renderer)
xtypeでコンポーネントを作りたいパネルを指定するとオブジェクトリテラルを使ってパネルが生成できました。見た目上はnew Ext.Panel({〜})とほとんどかわらないように見えます。xtypeを使う最大のメリットは遅延レンダリング(Lazy-Renderer)を使うことができるという点です。
オブジェクトリテラルがセットされた時点ではnewされません(インスタンス化されない)。描画が必要になった時に初めてインスタンス化されます。

xtypeでタブパネルを指定するサンプル。


new Ext.Viewport({
    layout:'border',
    renderTo:Ext.getBody(),
    items:[
        {
            region:'center',
            title:'Center Panel',
            html:'<p>Center Panel</p>',
            bodyStyle:'padding:100px',
            minSize:200,
        },{
            region:'west',
            xtype:'tabpanel',
            items:[
                {
                title:'tab1',
                html:'タブパネル1'
                },{
                title:'tab2',
                html:'タブパネル2'
                }
            ],
            height:90,
            width:200,
            minSize:200,
            maxSize:400,
            split:true
        }
    ]
});

ここではwestのコンポーネントにタブパネルを設定しています。タブパネルはさらに子となるパネルを必要とするので、その設定にもオブジェクトリテラルでExt.Panelを設定しています。(xtypeが省略されている場合はExt.Panelとして生成されます)。
通常タブパネルやアコーディオンレイアウトの場合はオブジェクトリテラルでxtypeを指定して、遅延レンダリングを有効にするのが常套手段です。
画面に見えていないパネルは、表示されるときに初めてレンダリングされます。簡単なアプリケーションの場合は遅延レンダリングの効果をあまり実感することはありませんが、AJAXを使ったパネルや画像、Flashを内部に読み込んでいるコンポーネントを使うようになると遅延レンダリングは必須になると思います。またidコンフィグを適切に付けておくことで、Ext.getCmpでオブジェクトリテラルを使って作ったコンポーネントを簡単に指定できますし、デバッグ時にFirebugでも分かりやすくなるので、なるべくidは付けておいたほうがいいと思います。
xtypeを適切に使って、見た目もコードもスマートなアプリを作るように心がけたいです。

  • Share/Bookmark


佐竹 裕行

1982年生まれ。滋賀→はこだて→名古屋→大垣→名古屋。
2006年名古屋学芸大学映像メディア学科卒、その後IAMAS卒(Studio2、6期生)。2009年にsus4に入社。学生時代はMax/MSP JitterやGainerばっかり使っていたが、現在社内では主にExtとモバイル開発、動画サービスのバックエンドを担当。知る人ぞ知るアノ鍵の人。

5 Responses to 'ExtJS入門5 xtypeを使ってパネルを作る。'

Subscribe to comments with RSS or TrackBack to 'ExtJS入門5 xtypeを使ってパネルを作る。'.

  1. [...] [...]

    ExtJS

    12 11 月 09 at 1:21 PM

  2. [...] [...]

    Ext Japan - ブログ

    13 11 月 09 at 3:57 PM

  3. [...] http://extjs.blog.sus4.co.jp/2009/11/11/extjs-tutorial5/ xtypeの使い方について解説します。 [...]

    第3回ExtJS勉強会

    27 11 月 09 at 5:28 PM

  4. [...] 今回のサンプルではExt.Toolbarのitemsにnew したクラスでなくオブジェクトを渡しています。今のところはサンプルのように書けばボタンが作れると思っておいてよいです。そのうちブログでも取り上げるかもしれません。defaultsコンフィグとxtypeでボタンを生成しています。こちらの記事を参考にしていただけるよいかもしれません。 http://extjs.blog.sus4.co.jp/2009/11/11/extjs-tutorial5/ [...]

  5. [...] 前回のHello, World + Tbarのサンプルによく似ていますが、今回はxtypeでツールバーを作成しています。 xtypeについてはコチラ [...]

コメントを残す

Get Adobe Flash playerPlugin by wpburn.com wordpress themes