Quantcast
Channel: かずきのBlog@hatena
Viewing all articles
Browse latest Browse all 1387

WinJSのListViewでクリックされた項目に応じた処理をする

$
0
0

TypeScriptでページに対応するViewModelを作ります。今回はリストを持っただけのシンプルなやつ。

ポイントはアイテムが選択されたときに呼び出されるようにするclickプロパティ。WinJS.Utilities.markSupportedForProcessingを呼び出してるところ。これをするとイベントハンドラに割り当ててもいけるっぽい。

/// <reference path="typings/winjs/winjs.d.ts" />
module Sample {exportclass Person {
        constructor(public name: string, public age: number) {}}exportclass IndexViewModel {
        constructor() {this.data = new WinJS.Binding.List([new Person("tanaka1", 10),
                new Person("tanaka2", 20),
                new Person("tanaka3", 30),
                new Person("tanaka4", 40),
                new Person("tanaka5", 50)
            ]);
        }

        data: WinJS.Binding.List<Person>;

        click = WinJS.Utilities.markSupportedForProcessing(((e: any) => {var index: number = e.detail.itemIndex;
            var selectedPerson = this.data.getAt(index);

            window.alert(selectedPerson.name);
        }).bind(this));
    }}

WinJS.Application.onready = () => {
    WinJS.UI.processAll().then(() => {var viewModel = WinJS.Binding.as(new Sample.IndexViewModel());
        WinJS.Binding.processAll(null, viewModel);
        var lv: WinJS.UI.ListView<Sample.Person> = document.querySelector("#listView").winControl;
    });
};
WinJS.Application.start();

HTMLは、素直にバインドしてる感じ。

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><metahttp-equiv="Content-Type"content="text/html; charset=utf-8"/><linkhref="WinJS/css/ui-dark.css"rel="stylesheet" /><scriptsrc="WinJS/js/base.js"></script><scriptsrc="WinJS/js/ui.js"></script><scriptsrc="WinJS/js/WinJS.js"></script><scriptsrc="Scripts/index.js"></script><title></title></head><body><divid="personTemplate"data-win-control="WinJS.Binding.Template"><divclass="win-type-large"style="padding: 10px; border: 1px solid white;"><spandata-win-bind="textContent: name"></span><spandata-win-bind="textContent: age"></span></div></div><divid="listView"data-win-control="WinJS.UI.ListView"data-win-bind="winControl.itemDataSource: data.dataSource; winControl.oniteminvoked: click"data-win-options="{            itemTemplate: select('#personTemplate'),            layout: {type: WinJS.UI.ListLayout}         }"></div></body></html>

実行して要素をクリックしてみるとダイアログが出る。

f:id:okazuki:20150102230121p:plain


Viewing all articles
Browse latest Browse all 1387

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>