data-win-bind="値を割り当てる属性などの指定 : 値 "値は、通常、連想配列などの形で用意されますので、「使用するキー」を書いておく、と考えればよいでしょう。例えば、 data-win-bind="name:savedvalue" といった具合に指定したならば、バインドする連想配列からsavedvalueの値を取り出し、そのタグのname属性に割り当てることになります。
WinJS.Binding.processAll( バインドするDOMオブジェクト , 割り当てる値 );第1引数には割り当てるタグのDOMオブジェクトを、第2引数には割り当てる値をそれぞれ指定します。割り当てるタグは、data-win-bind属性を用意したタグである必要はありません。それを含むタグであればOKです。あるタグのDOMを指定すると、そのタグ内にあるすべてのタグを検索し、data-win-bind属性があるものをすべて見つけてバインドしてくれます。また割り当てる値は、通常は名前を指定して値を取り出せるよう連想配列の形でまとめたものになります。
<p id="msg" data-win-bind="style.color: color; style.background: bgcolor;data-win-bind属性で、style.color、style.background、style.fontSizeの3つの属性に値をバインドしています。このように1つのタグに複数の値をバインドさせる場合には、セミコロン(;)で複数の値をつなげて記述します。
style.fontSize: fsize">this is list sample page.</p>
var bindmsg = document.getElementById("msg");実にシンプルですね。IDが"msg"と"table1"のDOMオブジェクトを取得し、それぞれにWinJS.Binding.processAllで連想配列propsをバインドします。id="table1"は、それ自身にはdata-win-bind属性はありません。テーブル内の<tr>タグ内の<td>タグ内の<input type="text">タグに用意されているだけです。が、これでちゃんと値がバインドされるのです。
WinJS.Binding.processAll(bindmsg, props);
var bindtable = document.getElementById("table1");
WinJS.Binding.processAll(bindtable, props);
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
※HTMLの<body>タグ <body> <h1 id="title">Sample Page</h1> <p id="msg" data-win-bind="style.color: color; style.background: bgcolor; style.fontSize: fsize">this is list sample page.</p> <table id="table1"> <tr><th>color:</th><td><input type="text" id="color" data-win-bind="value: color" /></td></tr> <tr><th>bgcolor:</th><td><input type="text" id="bgcolor" data-win-bind="value: bgcolor" /></td></tr> <tr><th>size:</th><td><input type="text" id="fsize" data-win-bind="value: 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(); // データのバインド var bindmsg = document.getElementById("msg"); WinJS.Binding.processAll(bindmsg, props); var bindtable = document.getElementById("table1"); WinJS.Binding.processAll(bindtable, props); document.getElementById("button1").addEventListener("click", button1Action); })); } } app.oncheckpoint = function (args) {} // ※追加した関数 function button1Action(event) { 略 } function loadProperties() { 略 } function saveProperties(props) { 略 } app.start(); })();
<< 前へ |