現在、リストビューを使用して、Windows ストア アプリ (HTML/JS) の別の div のコンテンツを操作しようとしています。
リストビューの「oniteminvoked」ハンドラー内で呼び出す単純な関数があります。
メソッド呼び出し
MyApp.Util.addClassById(q(".item"), item.itemId, "selected");
(ここで、itemId は新しく選択したアイテムのもので、「q」は WinJS.Utilities.query のエイリアスです)
メソッド宣言
function addClassById(elements, selectedId, className) {
elements.forEach(function (el) {
var id = parseInt(el.attributes['data-id'].value, 10);
if (id === selectedId) {
util.addClass(el, className);
}
else {
util.removeClass(el, className);
}
});
}
リストビューが読み込まれ、新しい項目を選択した後、これは期待どおりに機能します。ロードされないのはready
、問題のページの機能中に呼び出そうとしたときです。
デバッグを実行すると、リスト内のアイテムに対するクエリがページ機能中に何も返さないように見えるready
ため、この時点でリストがレンダリングされておらず、DOM クエリは何も返さないと想定しています。
問題はこれです。アイテムがレンダリングされた後にアイテムを選択する (またはリストビューでアクションを実行する) ための推奨されるアプローチは何ですか?
関数を呼び出すことができる「アフターレンダー」タイプのイベントである可能性があると思いましたが、機能するものを見つけることができないようです。
何か案は?