回答編集履歴

4

マスタッシュ上に表示する方法

2025/04/09 01:30

投稿

FKM
FKM

スコア3660

test CHANGED
@@ -12,6 +12,8 @@
12
12
 
13
13
  ### 解決策
14
14
  テンプレート上の[0]は文字列じゃなくて、値であることをJavaScriptに認識させてあげないといけません。その結果、以下のような記述になります。valueを付与し文字列から値を取得する方法、またはJavaScript的に['0']という連想配列が付与していると認識させて値を取得する方法、いずれも使用できるみたいです。
15
+
16
+ ちなみにv-forはプリミティブな値でもオブジェクトのいずれでもループ処理可能なので、マスタッシュ内に単純に出力する場合より、柔軟に変数が使えます。
15
17
 
16
18
  ```
17
19
  <script setup>
@@ -32,7 +34,7 @@
32
34
  {{ value1 }}<br />
33
35
  {{ value2[0] }}<br />
34
36
  {{ list1[0] }}<br />
35
- {{ list2[0].value }}<br />
37
+ {{ list2[0].value[0] }}<br />
36
38
  <ul>
37
39
  <li v-for="v in list1">{{ v }}</li>
38
40
  </ul>

3

値を認識させるのが大事

2025/04/09 01:16

投稿

FKM
FKM

スコア3660

test CHANGED
@@ -11,7 +11,7 @@
11
11
  証拠に{{ list2[0] }}としてみて、開発ツールで値を確認してみてください。おそらく文字列として[0]が表示されるはずです。
12
12
 
13
13
  ### 解決策
14
- なので、テンプレート上値であることを認識させてあげないといけません。その結果、以下のような記述になります。Reactiveの特長を使って、valueを付与し値を取得する方法、またはJavaScript的に['0']という連想配列して値を取得する方法、いずれも使用できるみたいです。
14
+ テンプレート上の[0]は文字列じゃなくて、値であることをJavaScriptに認識させてあげないといけません。その結果、以下のような記述になります。valueを付与し文字列から値を取得する方法、またはJavaScript的に['0']という連想配列が付与していると認識させて値を取得する方法、いずれも使用できるみたいです。
15
15
 
16
16
  ```
17
17
  <script setup>

2

値を変更しました

2025/04/09 01:14

投稿

FKM
FKM

スコア3660

test CHANGED
@@ -11,7 +11,7 @@
11
11
  証拠に{{ list2[0] }}としてみて、開発ツールで値を確認してみてください。おそらく文字列として[0]が表示されるはずです。
12
12
 
13
13
  ### 解決策
14
- なので、テンプレート上で値であることを認識させてあげないといけません。その結果、以下のような記述になります。
14
+ なので、テンプレート上で値であることを認識させてあげないといけません。その結果、以下のような記述になります。Reactiveの特長を使って、valueを付与し値を取得する方法、またはJavaScript的に['0']という連想配列として値を取得する方法、いずれも使用できるみたいです。
15
15
 
16
16
  ```
17
17
  <script setup>
@@ -19,7 +19,7 @@
19
19
 
20
20
  const data = reactive({
21
21
  value: 0,
22
- list: [0],
22
+ list: [1], //テストのために値を変更
23
23
  })
24
24
  const value1 = computed(() => data.value)
25
25
  const value2 = [computed(() => data.value)]
@@ -37,7 +37,7 @@
37
37
  <li v-for="v in list1">{{ v }}</li>
38
38
  </ul>
39
39
  <ul>
40
- <li v-for="v in list2[0].value">{{ v }}</li><!-- -->
40
+ <li v-for="v in list2[0]['0']">{{ v }}</li><!-- -->
41
41
  </ul>
42
42
  </template>
43
43
  ```

1

再検証の結果

2025/04/09 01:09

投稿

FKM
FKM

スコア3660

test CHANGED
@@ -11,11 +11,33 @@
11
11
  証拠に{{ list2[0] }}としてみて、開発ツールで値を確認してみてください。おそらく文字列として[0]が表示されるはずです。
12
12
 
13
13
  ### 解決策
14
- 逆にそれを文字列じゃくてオブジェクトと認識させてあげ場合は以下のよう記述ます。そうすればオブジェクトでラッピングしたときもこれはオブジェクトだとプログラムが自動認識して、数値として判別してくれます。
14
+ のでテンプレー上で値であるこ認識させてあげといけません。その結果、以下のよう記述になります。
15
15
 
16
16
  ```
17
+ <script setup>
18
+ import { reactive, computed } from 'vue'
19
+
17
20
  const data = reactive({
18
21
  value: 0,
19
- list: [0,], //文字列ではないと認識させておく
22
+ list: [0],
20
23
  })
24
+ const value1 = computed(() => data.value)
25
+ const value2 = [computed(() => data.value)]
26
+ const list1 = computed(() => data.list)
27
+ const list2 = [computed(() => data.list)]
28
+ </script>
29
+
30
+ <template>
31
+ <button @click="data.value++; data.list[0]++">Click</button><br />
32
+ {{ value1 }}<br />
33
+ {{ value2[0] }}<br />
34
+ {{ list1[0] }}<br />
35
+ {{ list2[0].value }}<br />
36
+ <ul>
37
+ <li v-for="v in list1">{{ v }}</li>
38
+ </ul>
39
+ <ul>
40
+ <li v-for="v in list2[0].value">{{ v }}</li><!-- -->
41
+ </ul>
42
+ </template>
21
43
  ```