Home > Tags > ext.js

ext.js

Ext.jsで、シンプルダイアログボックスを表示する方法

Ext.js

数あるAjaxフレームワークの中でも、もっともエフェクト処理が美しいフレームワークに「Ext.js」があります。
オフィシャルサイトのデモンストレーションを見るだけでも、うっとりするほど動きが美しいことが分かります。

»Ext Documentation Center

しかし、「美しいものにはとげがある」の言葉通り(?)、Ext.jsを利用するのは意外と大変。ドキュメントも親切なようで、大事な情報がいまいち載っていなかったりします。
そこで、備忘録もかねて今回「ダイアログを表示する」というスクリプトにチャレンジしてみたので、やり方を紹介しましょう。

1. Ext.jsを手に入れる

まずは、Ext.jsをダウンロードします。
»Download Ext JS Library

「Build your own Ext」という、必要な要素だけを選んでダウンロードできる機能もありますが、いまいちなにが必要か分からなかったので、ここでは全部入りをダウンロードしました。

2. JSファイルと CSSファイルの組み込み

次に、JSファイルと CSSファイルの組み込み。これが、非常に難しく見えて非常に簡単でした。JSファイルも CSSファイルもたくさん収録されているのに、ダイアログの表示に必要なファイルがどれかというのが、ドキュメントに書いていなかったのです。いろいろ試行錯誤したり、サンプルサイトのソースを見て理解できました。「-all」を使えばよいのでした。
というわけで、次のように組み込みます。

<link rel="stylesheet" type="text/css" href="_js/ext/resources/css/ext-all.css" />
<script type="text/javascript" src="_js/ext/ext-all.js"></script>

また、Ext.jsは単体でも利用できますが、Prototype.js、jQuery、Yahoo! UI Libraryのいずれかを利用している場合は「アダプタ」を利用して、それらのフレームワークを利用することができるようです。私の場合、Prototype.jsを使っているので次のようにしてアダプタを組み込みます。

<script type="text/javascript" src="_js/prototype.js"></script>
<script type="text/javascript" src="_js/scriptaculous.js?load=effects"></script>
<script type="text/javascript" src="_js/ext/ext-prototype-adapter.js"></script>

3. ダイアログの元を作る

次に、表示させるダイアログの内容を記述します。ページ内の適当な場所に作って、「style="display: hidden"」などとして隠しておくと良いでしょう。

<div id="areaDialog">
<div class="x-dlg-hd">ダイアログのタイトル</div>
<div class="x-dlg-bd">
ダイアログの内容
</div>
</div>

「x-dlg-hd」と「x-dlg-bg」というクラス名のついたdivに、それぞれ内容を入れ込み、id属性を付加した

要素でくるみます。これで準備完了。

4. いよいよ表示

いよいよ表示します。スクリプトは以下です。

/* ダイアログの表示 */
dialog = new Ext.BasicDialog("areaDialog", {
modal:true,
autoTabs:false,
width:500,
height:300,
shadow:true,
resizable:false,
});

最初のパラメータは、先ほど準備したダイアログの

要素につけたid属性。後は、JSON形式で、オプションを指定していきます。内容は見ればだいたい分かるかと。

後は、そのインスタンスを使って

dialog.show();

とすれば、表示できます。この時、showメソッドのパラメータに、ボタン要素の「dom」というプロパティ(?)を次のように指定すると・・・

dialog.show(Ext.get('btnAddRow').dom);

そのボタンから、ひゅーっと出てくるようなエフェクトでダイアログが表示されます。非常にクールです。
消すときは、hideメソッドでこちらも同様

dialog.hide(Ext.get('btnAddRow').dom);

などとすれば、ボタンに収まっていくようなエフェクトがかかります。

使い始めるまでは非常に大変でしたが、やはり非常にクールなフレームワークです。これからも愛用していこうと思います。

»Ext JS - JavaScript Library

Home > Tags > ext.js

サイト内検索(Google)

タグから選ぶ
人気の記事
a
最近の投稿
最近のコメント

Return to page top