カード型レイアウトを作成し表示する
説明
カード型レイアウトを作成し表示するにはExt.Panel()を使います。パラメータでlayout:'card'を指定するとカード型レイアウトになります。これは一般的に見られるウイザード形式と同じものになります。
ナビゲーションはbbarを使いボタンに表示する文字をtextで、ボタンクリックされた時に呼び出す関数をhandlerで指定します。handlerにnavHandler.createDelegate(this, [-1])のように指定するとボタンクリック時にはnavHandler関数が呼び出され、パラメータに-1の値が渡されます。[1]とすれば+1が渡されます。この渡された値に応じて表示する内容(カード)を変更します。呼び出された関数内では「●.layout.setActiveItem(表示番号)」のようにすることで指定したカードを表示することができます。なお、表示番号は0から始まり、負数や表示最大値を超えた場合にはエラーになるので注意が必要です。
カード内容はExt.Panel()のitemsに配列形式で指定しhtml:'表示する内容'のようにします。これを表示したいカードの数だけ配列要素として定義しておきます。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>Sample</title>
<link rel="stylesheet" href="resource/css/ext-all.css" type="text/css" media="all">
<link rel="stylesheet" href="resource/css/main.css" type="text/css" media="all">
<script type="text/javascript" src="js/ext-base.js"></script>
<script type="text/javascript" src="js/ext-all.js"></script>
<script type="text/javascript"><!--
Ext.EventManager.on(window, "load", function(){
var navHandler = function(direction){
card.count = (card.count + direction).constrain(0, card.items.length-1);
card.layout.setActiveItem(card.count);
}
var card = new Ext.Panel({
count : 0,
renderTo: 'aPanel',
title: 'ウイザード',
layout:'card',
activeItem: 0,
bbar: [{
text: '前へ',
handler: navHandler.createDelegate(this, [-1])
},{
text: '次へ',
handler: navHandler.createDelegate(this, [1])
}],
items: [{
html: 'ステップ 1/3<br>はじまり'
},{
html: 'ステップ 2/3<br>とちゅう'
},{
html: 'ステップ 3/3<br>おわり'
}]
});
});
// --></script>
</head>
<body>
<h1>カード型レイアウト</h1>
<div id="aPanel"></div>
</body>
</html>