名前WinJS.Navigation
空間は状態と履歴の管理を提供しますが、実際にはナビゲーション自体は行いません。あるページから別のページに移動するには、名前空間内のイベントの1つにハンドラー関数を定義する必要があります。これにより、アプリにとって意味のある方法でメソッドWinJS.Navigation
の呼び出しに応答できます。WinJS.Navigation.navigate
デモンストレーションとしてhomePage.html
、ナビゲーションのトリガーとなるコマンドを含むNavBarを含むファイルを次に示します。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>NavProject</title>
<link href="//Microsoft.WinJS.1.0/css/ui-dark.css" rel="stylesheet" />
<script src="//Microsoft.WinJS.1.0/js/base.js"></script>
<script src="//Microsoft.WinJS.1.0/js/ui.js"></script>
<link href="/css/default.css" rel="stylesheet" />
<script src="/js/homePage.js"></script>
</head>
<body>
<div id="contentTarget">
<h1>Select a page from the NavBar</h1>
</div>
<div id="navbar" data-win-control="WinJS.UI.AppBar"
data-win-options="{placement:'top'}">
<button data-win-control="WinJS.UI.AppBarCommand"
data-win-options="{id:'NextPage', label:'Next Page',
icon:'\u0031', section:'selection'}">
</button>
</div>
</body>
</html>
NavBarとともに、である要素を定義しましdiv
た。これは、ユーザーがNavBarコマンドをクリックしたときに新しいファイルが読み込まれるコンテンツ内の場所です。id
contentTarget
明確化:置き換えたいコンテンツはすべてcontentTarget
要素に入れる必要があります。そうしないと、古いコンテンツと新しいコンテンツが混在して表示されます。
そして、これがそれを接続するJavaScriptファイルです(これは、homePage.js
上記のHTMLファイルにスクリプト要素を追加したファイルです)。
(function () {
"use strict";
WinJS.Navigation.addEventListener("navigating", function (e) {
var elem = document.getElementById("contentTarget");
WinJS.UI.Animation.exitPage(elem.children).then(function () {
WinJS.Utilities.empty(elem);
WinJS.UI.Pages.render(e.detail.location, elem)
.then(function () {
return WinJS.UI.Animation.enterPage(elem.children)
});
});
});
var app = WinJS.Application;
var activation = Windows.ApplicationModel.Activation;
app.onactivated = function (args) {
args.setPromise(WinJS.UI.processAll());
navbar.addEventListener("click", function (e) {
if (e.target.id == "NextPage") {
WinJS.Navigation.navigate("/nextPage.html");
}
}, true);
};
app.start();
})();
WinJS.Navigation.navigating
イベントのハンドラー関数を追加したことに注目してください。このイベントはへの呼び出しによってトリガーされWinJS.Navigation.navigate
、ナビゲーションターゲットの詳細はdetail.location
イベントオブジェクトのプロパティに含まれます。
この例では、ターゲット要素のコンテンツをすべてクリアし、それをターゲットファイルのコンテンツに置き換えて、一方から他方への遷移をアニメーション化します。
イベントに対して1つのハンドラーを定義するだけで済みます。nextPage.html
つまり、ナビゲーションにつながる要素がある場合は、次WinJS.Navigation.navigate
のように、新しいイベントハンドラーを作成せずに呼び出す必要があります。
<!DOCTYPE html>
<html>
<head>
<title></title>
<script>
WinJS.UI.Pages.define("/nextPage.html", {
ready: function () {
back.addEventListener("click", function () {
WinJS.Navigation.navigate("/homePage.html");
});
}
});
</script>
</head>
<body>
This is next page.
<button id="back">Back</button>
</body>
</html>