@@ -168,7 +168,7 @@ example1.items = example1.items.filter(item => item.message.match(/Foo/))
168
168
例えば:
169
169
170
170
``` html
171
- <li v-for =" n in evenNumbers" >{{ n }}</li >
171
+ <li v-for =" n in evenNumbers" :key = " n " >{{ n }}</li >
172
172
```
173
173
174
174
``` js
@@ -188,7 +188,7 @@ computed: {
188
188
189
189
``` html
190
190
<ul v-for =" numbers in sets" >
191
- <li v-for =" n in even(numbers)" >{{ n }}</li >
191
+ <li v-for =" n in even(numbers)" :key = " n " >{{ n }}</li >
192
192
</ul >
193
193
```
194
194
@@ -211,7 +211,7 @@ methods: {
211
211
212
212
``` html
213
213
<div id =" range" class =" demo" >
214
- <span v-for =" n in 10" >{{ n }} </span >
214
+ <span v-for =" n in 10" :key = " n " >{{ n }} </span >
215
215
</div >
216
216
```
217
217
@@ -225,7 +225,7 @@ methods: {
225
225
226
226
``` html
227
227
<ul >
228
- <template v-for =" item in items" >
228
+ <template v-for =" item in items" :key = " item.msg " >
229
229
<li >{{ item.msg }}</li >
230
230
<li class =" divider" role =" presentation" ></li >
231
231
</template >
@@ -238,25 +238,24 @@ methods: {
238
238
` v-if ` と ` v-for ` を同時に利用することは** 推奨されません** 。 詳細については [ スタイルガイド] ( ../style-guide/#avoid-v-if-with-v-for-essential ) を参照ください。
239
239
:::
240
240
241
- それらが同じノードに存在するとき、 ` v-for ` は ` v-if ` よりも高い優先度を持ちます。これは ` v-if ` がループの各繰り返しで実行されることを意味します。以下のように、これはいくつかの項目のみのノードを描画する場合に便利です。
241
+ それらが同じノードに存在するとき、 ` v-if ` は ` v-for ` よりも高い優先度を持ちます。つまり ` v-if ` の条件は、 ` v-for ` のスコープの変数にはアクセスできないということです:
242
242
243
243
``` html
244
+ <!-- インスタンスに "todo" プロパティが定義されていないため、エラーが発生します。 -->
245
+
244
246
<li v-for =" todo in todos" v-if =" !todo.isComplete" >
245
- {{ todo }}
247
+ {{ todo.name }}
246
248
</li >
247
249
```
248
250
249
- 上記は、完了していない項目だけを描画します。
250
-
251
- 代わりに、ループの実行を条件付きでスキップすることを目的にしている場合は、ラッパー要素 (または [ ` <template> ` ] ( conditional#conditional-groups-with-v-if-on-lt-template-gt ) )上に ` v-if ` を配置できます。例えば:
251
+ これは ` v-for ` を ` <template> ` タグで囲み、移動させることで修正できます:
252
252
253
253
``` html
254
- <ul v-if = " todos.length " >
255
- <li v-for = " todo in todos " >
256
- {{ todo }}
254
+ <template v-for = " todo in todos" :key = " todo.name " >
255
+ <li v-if = " ! todo.isComplete " >
256
+ {{ todo.name }}
257
257
</li >
258
- </ul >
259
- <p v-else >No todos left!</p >
258
+ </template >
260
259
```
261
260
262
261
## コンポーネントと ` v-for `
@@ -346,7 +345,8 @@ app.component('todo-item', {
346
345
<button @click="$emit('remove')">Remove</button>
347
346
</li>
348
347
` ,
349
- props: [' title' ]
348
+ props: [' title' ],
349
+ emits: [' remove' ]
350
350
})
351
351
352
352
app .mount (' #todo-list-example' )
0 commit comments