applicationData = Windows.Storage.ApplicationData.current;まずは、先ほど説明したApplicationDataとApplicationDataContainerの準備の部分です。currentでApplicationDataを取得し、localSettingsでApplicationDataContainerを取得します。そして、containers.hasKeyでcontainer_keyのコンテナがあるかどうかチェックし、ない場合にはcreateContainerで指定のキーのコンテナを作成しておきます。
localSettings = applicationData.localSettings;
if (!localSettings.containers.hasKey(container_key)) {
localSettings.createContainer(container_key,
Windows.Storage.ApplicationDataCreateDisposition.Always);
saveProperties({ 'color': 'white', 'bgcolor': 'black', 'fsize': 14 });
}
function loadProperties() {読み込みはloadPropertiesという関数にまとめてあります。containers.lookupでcontainer_keyというキーのコンテナを取得し、そのvaluesで"color"、"bgcolor"、"fsize"という値を取り出し、連想配列にまとめて返します。
var c = localSettings.containers.lookup(container_key).
values["color"];
var bg = localSettings.containers.lookup(container_key).
values["bgcolor"];
var s = localSettings.containers.lookup(container_key).
values["fsize"];
return {'color':c, 'bgcolor':bg, 'fsize':s};
}
function saveProperties(props) {書き出しはsaveProperties関数としてまとめてあります。こちらは連想配列で値を受け取り、それらをcontainers.lookup(container_key).valuesの値に保管します。読み込みと逆の操作をしているだけですね。
localSettings.containers.lookup(container_key).
values["color"] = props.color;
localSettings.containers.lookup(container_key).
values["bgcolor"] = props.bgcolor;
localSettings.containers.lookup(container_key).
values["fsize"] = props.fsize;
}
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
※HTMLの<body>部分 <body> <h1 id="title">Sample Page</h1> <p id="msg">this is list sample page.</p> <table> <tr><th>color:</th><td><input type="text" id="color" /></td></tr> <tr><th>bgcolor:</th><td><input type="text" id="bgcolor" /></td></tr> <tr><th>size:</th><td><input type="text" id="fsize" /></td></tr> <tr><th></th><td><button id="button1">Save</button></td></tr> </table> </body> ※JavaScriptのスクリプト (function () { "use strict"; WinJS.Binding.optimizeBindingReferences = true; var app = WinJS.Application; var activation = Windows.ApplicationModel.Activation; var applicationData = null; var localSettings = null; var container_key = "my_sample_app"; // コンテナキーの名前 app.onactivated = function (args) { if (args.detail.kind === activation.ActivationKind.launch) { if (args.detail.previousExecutionState !== activation. ApplicationExecutionState.terminated) {} else {} args.setPromise(WinJS.UI.processAll().then(function completed() { applicationData = Windows.Storage.ApplicationData.current; localSettings = applicationData.localSettings; if (!localSettings.containers.hasKey(container_key)) { localSettings.createContainer(container_key, Windows.Storage.ApplicationDataCreateDisposition.Always); saveProperties({ 'color': 'white', 'bgcolor': 'black', 'fsize': 14 }); } var props = loadProperties(); document.getElementById("color").value = props.color; document.getElementById("bgcolor").value = props.bgcolor; document.getElementById("fsize").value = props.fsize; changeProperties(props); document.getElementById("button1").addEventListener("click", button1Action); })); } } app.oncheckpoint = function (args) {} // ※追加した関数 function button1Action(event) { var c = document.getElementById("color").value; var bg = document.getElementById("bgcolor").value; var s = document.getElementById("fsize").value; var props = { 'color': c, 'bgcolor': bg, 'fsize': s }; saveProperties(props); changeProperties(props); new Windows.UI.Popups.MessageDialog("保存しました。").showAsync() } function loadProperties() { var c = localSettings.containers.lookup(container_key).values["color"]; var bg = localSettings.containers.lookup(container_key).values["bgcolor"]; var s = localSettings.containers.lookup(container_key).values["fsize"]; return {'color':c, 'bgcolor':bg, 'fsize':s}; } function saveProperties(props) { localSettings.containers.lookup(container_key).values["color"] = props.color; localSettings.containers.lookup(container_key).values["bgcolor"] = props.bgcolor; localSettings.containers.lookup(container_key).values["fsize"] = props.fsize; } function changeProperties(props) { document.getElementById("msg").style.color = props.color; document.getElementById("msg").style.background = props.bgcolor; document.getElementById("msg").style.fontSize = props.fsize + "pt"; } app.start(); })();
<< 前へ | 次へ >> |