前提・実現したいこと
ニフクラのファイルストアに保存している画像を新しい順でリスト形式に表示したいのですが、表示させるたびに順番が変わってしまいます。
データストアのオブジェクトを検索し該当したファイル名(ファイルストアの画像と同じ)でファイルストアに保存されている画像を取得、リスト形式に表示させようとしています。
その際にリストをタップするとイベントが発生するようにしています。
例)
- 画像1: イベント1
- 画像2: イベント2
- 画像3: イベント3
現在、画像をリスト形式で表示させることはできたのですが、表示させるたびに順番が変わってしまいます。
またリストごとにイベントを追加できたのですが画像と紐付いません。
画像を順番通りに表示させる方法はないでしょうか。
また原因などを探る方法をご教授下さい。
該当のソースコード
javascript
1function select(category) { 2 myNavigator.pushPage('display.html'); //画面遷移 3 var LaundryData = ncmb.DataStore("LaundryData"); 4 var currentUser = ncmb.User.getCurrentUser(); 5 LaundryData.equalTo("owner", currentUser.get("userName")) //現在ログインしているユーザ、あてはまるカテゴリで検索 6 .equalTo("categoryData", category) 7 .order("laundryName") 8 .fetchAll() 9 .then(function(results) { 10 var markData1 = []; 11 console.log(category + ":" + results.length); 12 for(var i = 0; i < results.length; i++) { 13 var reader = new FileReader(); 14 reader.onload = (function(e) { 15 var dataUrl = reader.result; 16 var display = document.getElementById('display'); //HTMLにあるons-listタグを取得 17 var list = document.createElement('ons-list-item'); 18 list.setAttribute("modifier", "chevron"); 19 list.setAttribute("tappable", ""); 20 var img = document.createElement('img'); 21 img.setAttribute("wisth", "100"); 22 img.setAttribute("height", "100"); 23 display.appendChild(list).appendChild(img); 24 var listItems = display.children; 25 for(var i = 0; i < listItems.length; i++) { //生成した各リストにイベントを追加 26 listItems[i].firstChild.src = dataUrl; 27 listItems[i].onclick = function(i) { 28 var mark = markData1[i]; 29 return function() { 30 result(mark); 31 console.log(mark); 32 } 33 }(i) 34 } 35 }); 36 var object = results[i]; 37 var imageName = object.laundryName; 38 markData1[i] = object.markData1; 39 console.log(imageName); 40 ncmb.File.download(imageName, "blob") //ファイルストアからダウンロード 41 .then(function(blob) { 42 reader.readAsDataURL(blob); 43 }) 44 .catch(function(error) { 45 console.log(error); 46 }); 47 } 48 }) 49 .catch(function(error) { 50 console.log(error); 51 });
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/07 14:42
2020/01/08 01:43
2020/01/08 14:18