元となる記事 『分割アプリケーション』/ Win8(Metro)テンプレートのテンプレートたる意味 新しいページは、新しい HTML と JS を作成して、items.html のタイトルの横から呼び出したいと思います 新しい items.html
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta charset="utf-8" /> <title>itemsPage</title> <!-- WinJS references --> <link href="//Microsoft.WinJS.1.0.RC/css/ui-dark.css" rel="stylesheet" /> <script src="//Microsoft.WinJS.1.0.RC/js/base.js"></script> <script src="//Microsoft.WinJS.1.0.RC/js/ui.js"></script> <link href="/css/default.css" rel="stylesheet" /> <link href="/pages/items/items.css" rel="stylesheet" /> <script src="/js/data.js"></script> <script src="/pages/items/items.js"></script> </head> <body> <!-- This template is used to display each item in the ListView declared below. --> <div class="itemtemplate" data-win-control="WinJS.Binding.Template"> <img class="item-image" src="#" data-win-bind="src: backgroundImage; alt: title" /> <div class="item-overlay"> <h4 class="item-title" data-win-bind="textContent: title"></h4> <h6 class="item-subtitle win-type-ellipsis" data-win-bind="textContent: subtitle"></h6> </div> </div> <!-- The content that will be loaded and displayed. --> <div class="itemspage fragment"> <header aria-label="Header content" role="banner"> <button class="win-backbutton" aria-label="Back" disabled></button> <h1 class="titlearea win-type-ellipsis"> <span class="pagetitle">分割</span> <button id="newpage">新しいページ</button> </h1> </header> <section aria-label="Main content" role="main"> <div class="itemslist" aria-label="List of groups" data-win-control="WinJS.UI.ListView" data-win-options="{ selectionMode: 'none' }"></div> </section> </div> </body> </html>
items.js では、items.html の定義である、WinJS.UI.Pages.define が実行されているので、その初期処理部分である『ready』で新しく追加したボタンのイベントを作成し、新しいページの呼び出し処理である、WinJS.Navigation.navigate を実行しています。この際、第一引数には URL を指定しますが、第二引数には新しいページへと引き渡す JSON をオブジェクトをセットしています 新しいページの HTML 記述(hello.html)
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta charset="utf-8" /> <title>splitPage</title> <!-- WinJS references --> <link rel="stylesheet" type="text/css" href="//Microsoft.WinJS.1.0.RC/css/ui-dark.css" /> <script src="//Microsoft.WinJS.1.0.RC/js/base.js"></script> <script src="//Microsoft.WinJS.1.0.RC/js/ui.js"></script> <link href="/css/default.css" rel="stylesheet" /> <link href="/pages/split/split.css" rel="stylesheet" /> <script type="text/javascript" src="hello.js"></script> </head> <body> <div style="padding:20px;"> <header aria-label="Header content" role="banner"> <button class="win-backbutton" aria-label="Back" disabled></button> </header> こんにちは </div> </body> </html>
新しいページは何も定義はしていませんが、唯一『戻るボタン』を配置する際にルールがあると思って下さい。これし、navigator.js に書かれている、『header[role=banner] .win-backbutton』というセレクタに合わせる必要があるということです。この条件に合わせることで、ナビゲートのコントロールはほぼ、navigator.js が行います。 あとは、hello.js で、このページの定義を行う事で全体が正しく動作します
(function () { "use strict"; var appViewState = Windows.UI.ViewManagement.ApplicationViewState; var binding = WinJS.Binding; var nav = WinJS.Navigation; var ui = WinJS.UI; var utils = WinJS.Utilities; ui.Pages.define("/pages/hello/hello.html", { // この関数は、ユーザーがこのページに移動するたびに呼び出されます。 // ページ要素にアプリケーションのデータを設定します。 ready: function (element, options) { Debug.writeln(JSON.stringify(options, null, " ")); }, unload: function () { } }); })();
▼ JSON.stringify による options出力内容です
{ "param1": "自動的に", "param2": "ページのオプションとして ready イベントへ" }
|
【Windows8 Metro(JS/C#)の最新記事】
- Win8(JS Metro)の『分割・・・』テンプレートにアプリバーを追加して、新しいページを定義する
- Win8(JS Metro)の『分割・・・』テンプレートを使って RSS を収集するサンプル
- 『分割アプリケーション』/ Win8(Metro)テンプレートのテンプレートたる意味
- Windows8(JavaScript Metro Style) 関連リンク
- Windows8 で SkyDrive にアップロードするサンプル
- Windows8 Metro(JS) で LiveSDK を使って signin してテキスト表示するだけのサンプルコードの実行
- Windows8 Metro(JS) でのカメラの利用は簡単ですが、まだ製品版では無いせいか他の処理と同時に動かすと、問題もあるようです
- Windows8 Metro(JS) で Three.js の 3D モデル表示(Canvas)を行う
- Windows8 Metro(JS)の画面切り替えが解る、jQuery とのコラボ
- Google ドキュメントを使ってソースコード配布と解説
- 余計なものを全て排除した Win8 Metro(JS) アプリの画面遷移
- querySelectorAll(結果はNodeList) と forEach( Array のメソッド ) の動作確認コード
- Win8 Metro(JS) のクラス定義用クラスでの記述仕様で、getter が存在します
- Win8 Metro で画面の表示変更は、画面部分(?)オブジェクトの入れ替えを自分で行います
- Win8 Metro(JS) : 印刷処理
- Win8 Metro(JS) : WinJS.xhr の内容(XMLHttpRequest)