質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

889閲覧

【AngularJS】リストで構成されたリストの表示方法で詰まっています

rinimaruranran

総合スコア36

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2019/03/26 08:28

現在AngularでJava側から下記のようなデータを受け取っています。

(31) [Array(10), Array(10),Array(10), Array(10),Array(10), Array(10),Array(10), Array(10),Array(10), Array(10),Array(10), Array(10),Array(10), Array(10),Array(10), Array(10),Array(10), Array(10),Array(10), Array(10),Array(10), Array(10),Array(10), Array(10),Array(10), Array(10),Array(10), Array(10),Array(10), Array(10),Array(10)]

31日分のデータがあり、それぞれにIDやName、Statusなどの10件の情報が入っています。

これをng-repeatを使って効率的に表示させたいのですが、下記のように記述してもうまくいきません。
一番最後に読み込まれるデータ(31日目のデータ)が31日分表示されてしまいます。
おそらく$scope.id等が常にアップデートされてしまっているんだと思うのですが、解決策が思い浮かびません。

イメージとして、JS側でid1,id2・・・id31と番号を振っていってHTMLで呼び出すときもitemListData.id1,itemListData.id2・・・itemListData.id31と対応させたいので、310項目べた書きしようかと思ったのですが、流石に格好悪すぎるのでループ文を使って綺麗にまとめたいです。

解決方法や参考になる記事等をご存知の方がいらっしゃればご教示いただきたいです。
よろしくお願いいたします。

Angular

1.success(function (data, status, headers, config) { 2 for (var i = 0; i < 31; i++){ 3 if (data[i][0]) { 4 $scope.itemListDataResult = data; 5 $scope.elementId = data[i][0].id; 6 for (var k = 0; k < 10; k++){ 7 $scope.itemListDataResult = data; 8 $scope.itemDataResult = data[i]; 9 $scope.id = data[i][k].id; 10 $scope.name = data[i][k].name; 11 $scope.price = data[i][k].price; 12 } 13 } 14 }

HTML

1<li ng-repeat="itemListData in itemListDataResult"> 2 <div class="title"> 3 <p>{{itemListData.id}}</p> 4 </div> 5 <table class="table"> 6 <tbody> 7 <tr> 8 <th>ID</th> 9 <th>NAME</th> 10 <th>PRICE</th> 11 </tr> 12 <tr ng-repeat="itemData in itemDataResult"> 13 <td>{{itemData.id}}</td> 14 <td>{{itemData.name}}</td> 15 <td>{{itemData.price}}</td> 16 </tr> 17 </tbody> 18 </table> 19</li>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/03/26 10:01

素のJavaScriptで書いては駄目なの?
rinimaruranran

2019/03/26 10:03

できれば学習も兼ねてAngularでがいいのですが、JavaScriptでのやり方も詰まっているので教えていただけると幸いです。
guest

回答2

0

検証してないけれど。
ちなみに改行してあるだけで1行です。

javascript

1.success(function (data, status, headers, config) { 2 data.forEach ( 3 function ({id, name, price}) { 4 [id, name, price].forEach ( 5 function (val) { 6 this.insertCell (-1) 7 .textContent = val; 8 }, 9 this.insertRow (-1) 10 ) 11 }, 12 document.querySelector ('table.table') 13 ); 14 15

投稿2019/03/26 10:17

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

html内で、

ng-repeat="itemData in itemDataResult"

としていた箇所を、

ng-repeat="itemData in itemListData"

とし、JS内で

$scope.itemDataResult = data[i];

の記述を削除することで、想定していた挙動になりました。

投稿2019/03/28 07:46

rinimaruranran

総合スコア36

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問