teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

補足

2020/03/08 12:50

投稿

popobot
popobot

スコア6588

answer CHANGED
@@ -1,4 +1,4 @@
1
- 配列が2段になっているので、以下のように2段ループすればいいと思います。なおAPI結果はそのまま`this.tasks`にした前提です。
1
+ 配列が2段になっているので、以下のように2段ループすればいいと思います。なおAPI結果はそのまま`this.tasks`に保存した場合です。
2
2
  ```
3
3
  <div v-for="(dailyTasks, i) in tasks" v-bind:key="i">
4
4
  array={{ i }}

2

test.jsonが想定していた内容と違っていたのでコードを修正

2020/03/08 12:50

投稿

popobot
popobot

スコア6588

answer CHANGED
@@ -1,21 +1,24 @@
1
- tasksの初期値が配列`[]`になっていますがオブジェクト`{}`にすれば表示されると思います
1
+ 配列が2段になっているので以下のよう2段ループすればいいと思います。なおAPI結果はそのまま`this.tasks`にした前提です。
2
2
  ```
3
- data() {
3
+ <div v-for="(dailyTasks, i) in tasks" v-bind:key="i">
4
- return {
5
- tasks: {},
4
+ array={{ i }}
5
+ <div class="chart" v-for="(task, j) in dailyTasks" v-bind:key="j">
6
+ task={{ task.task }}
6
- };
7
+ </div>
7
- },
8
+ </div>
8
9
  ```
9
10
 
10
11
  ----
11
12
 
12
- 動作確認したコードも貼っておきます
13
+ 動作確認したコード全体も貼っておきます
13
14
  ```
14
15
  <template>
15
16
  <div>
17
+ <div v-for="(dailyTasks, i) in tasks" v-bind:key="i">
18
+ array={{ i }}
16
- <div class="chart" v-for="(task, i) in tasks" v-bind:key="i">
19
+ <div class="chart" v-for="(task, j) in dailyTasks" v-bind:key="j">
17
- {{ task }}
20
+ task={{ task.task }}
18
- <!-- テスト表示 -->
21
+ </div>
19
22
  </div>
20
23
  </div>
21
24
  </template>
@@ -26,7 +29,7 @@
26
29
  export default {
27
30
  data() {
28
31
  return {
29
- tasks: {}
32
+ tasks: []
30
33
  };
31
34
  },
32
35
  created() {
@@ -35,12 +38,11 @@
35
38
  methods: {
36
39
  async loadTasks() {
37
40
  var resp = await axios.get("./task.json");
38
- for (var i in resp.data) {
39
- this.$set(this.tasks, i, resp.data[i]);
41
+ this.tasks = resp.data;
40
- }
41
- console.log(this.tasks); // ここのは狙いのデータが表示される
42
42
  }
43
43
  }
44
44
  };
45
45
  </script>
46
- ```
46
+ ```
47
+
48
+ ※ test.jsonが想定していた内容と違っていたので回答を修正しています

1

追記

2020/03/08 12:49

投稿

popobot
popobot

スコア6588

answer CHANGED
@@ -5,4 +5,42 @@
5
5
  tasks: {},
6
6
  };
7
7
  },
8
+ ```
9
+
10
+ ----
11
+
12
+ 動作確認したコードも貼っておきます
13
+ ```
14
+ <template>
15
+ <div>
16
+ <div class="chart" v-for="(task, i) in tasks" v-bind:key="i">
17
+ {{ task }}
18
+ <!-- テスト表示 -->
19
+ </div>
20
+ </div>
21
+ </template>
22
+
23
+ <script>
24
+ import axios from "axios";
25
+
26
+ export default {
27
+ data() {
28
+ return {
29
+ tasks: {}
30
+ };
31
+ },
32
+ created() {
33
+ this.loadTasks();
34
+ },
35
+ methods: {
36
+ async loadTasks() {
37
+ var resp = await axios.get("./task.json");
38
+ for (var i in resp.data) {
39
+ this.$set(this.tasks, i, resp.data[i]);
40
+ }
41
+ console.log(this.tasks); // ここのは狙いのデータが表示される
42
+ }
43
+ }
44
+ };
45
+ </script>
8
46
  ```