@@ -48,7 +48,7 @@ Vue には [Web Components spec draft](https://github.com/w3c/webcomponents/blob
48
48
<todo-button >
49
49
<!-- コンポーネントを使ってアイコンを追加 -->
50
50
<font-awesome-icon name =" plus" ></font-awesome-icon >
51
- Your Profile
51
+ Add todo
52
52
</todo-button >
53
53
```
54
54
@@ -100,7 +100,6 @@ Vue には [Web Components spec draft](https://github.com/w3c/webcomponents/blob
100
100
101
101
> 親のテンプレート内の全てのものは親のスコープでコンパイルされ、子のテンプレート内の全てのものは子のスコープでコンパイルされる。
102
102
103
-
104
103
## フォールバックコンテンツ
105
104
106
105
スロットに対して、コンテンツがない場合にだけ描画されるフォールバック (つまり、デフォルトの) コンテンツを指定すると便利な場合があります。例えば、` <submit-button> ` コンポーネントにおいて:
@@ -222,7 +221,8 @@ Vue には [Web Components spec draft](https://github.com/w3c/webcomponents/blob
222
221
</footer >
223
222
</div >
224
223
```
225
- ** ` v-slot ` は([ 一つの例外] ( #デフォルトスロットしかない場合の省略記法 ) を除き) ` <template> ` にしか指定できないことに注意してください。
224
+
225
+ ** ` v-slot ` は([ 一つの例外] ( #デフォルトスロットしかない場合の省略記法 ) を除き) ` <template> ` にしか指定できないことに注意してください。
226
226
227
227
## スコープ付きスロット
228
228
@@ -247,8 +247,7 @@ app.component('todo-list', {
247
247
})
248
248
```
249
249
250
- 親コンポーネントでこれをカスタマイズするために、スロットに交換してもよいでしょう:
251
-
250
+ 親コンポーネントでこれをカスタマイズするために、<span v-pre >` {{ item }} ` </span > を ` <slot> ` に置き換えたい場合があります:
252
251
253
252
``` html
254
253
<todo-list >
@@ -259,23 +258,33 @@ app.component('todo-list', {
259
258
260
259
しかし、これは動作しません。というのも、 ` item ` にアクセスすることができるのは ` <todo-list> ` コンポーネントだけですが、ここで指定しているコンテンツは親コンポーネントで描画されるからです。
261
260
262
- 親コンポーネント内でスロットコンテンツとして ` item ` を使えるようにするためには、これを ` <slot> ` 要素の属性としてバインドします :
261
+ 親コンポーネント内でスロットコンテンツとして ` item ` を使えるようにするためには、これを ` <slot> ` 要素の属性として束縛します :
263
262
264
263
``` html
265
264
<ul >
266
265
<li v-for =" ( item, index ) in items" >
267
- <slot v-bind :item =" item" ></slot >
266
+ <slot :item =" item" ></slot >
268
267
</li >
269
268
</ul >
270
269
```
271
270
272
- ` <slot> ` 要素にバインドされた属性は、 ** スロットプロパティ** と呼ばれます。これで、親スコープ内で ` v-slot ` に値を指定して、渡されたスロットプロパティの名前を定義できます:
271
+ 必要な数の属性を ` slot ` に束縛できます:
272
+
273
+ ``` html
274
+ <ul >
275
+ <li v-for =" ( item, index ) in items" >
276
+ <slot :item =" item" :index =" index" :another-attribute =" anotherAttribute" ></slot >
277
+ </li >
278
+ </ul >
279
+ ```
280
+
281
+ ` <slot> ` 要素に束縛された属性は、 ** スロットプロパティ** と呼ばれます。これで、親スコープ内で ` v-slot ` に値を指定して、渡されたスロットプロパティの名前を定義できます:
273
282
274
283
``` html
275
284
<todo-list >
276
285
<template v-slot:default =" slotProps" >
277
286
<i class =" fas fa-check" ></i >
278
- <span class =" green" >{{ slotProps.item }}<span >
287
+ <span class =" green" >{{ slotProps.item }}</ span >
279
288
</template >
280
289
</todo-list >
281
290
```
@@ -291,7 +300,7 @@ app.component('todo-list', {
291
300
``` html
292
301
<todo-list v-slot:default =" slotProps" >
293
302
<i class =" fas fa-check" ></i >
294
- <span class =" green" >{{ slotProps.item }}<span >
303
+ <span class =" green" >{{ slotProps.item }}</ span >
295
304
</todo-list >
296
305
```
297
306
@@ -300,7 +309,7 @@ app.component('todo-list', {
300
309
``` html
301
310
<todo-list v-slot =" slotProps" >
302
311
<i class =" fas fa-check" ></i >
303
- <span class =" green" >{{ slotProps.item }}<span >
312
+ <span class =" green" >{{ slotProps.item }}</ span >
304
313
</todo-list >
305
314
```
306
315
@@ -309,10 +318,9 @@ app.component('todo-list', {
309
318
``` html
310
319
<!-- 不正。警告が出ます -->
311
320
<todo-list v-slot =" slotProps" >
312
- <todo-list v-slot:default =" slotProps" >
313
- <i class =" fas fa-check" ></i >
314
- <span class =" green" >{{ slotProps.item }}<span >
315
- </todo-list >
321
+ <i class =" fas fa-check" ></i >
322
+ <span class =" green" >{{ slotProps.item }}</span >
323
+
316
324
<template v-slot:other =" otherSlotProps" >
317
325
slotProps is NOT available here
318
326
</template >
@@ -325,13 +333,13 @@ app.component('todo-list', {
325
333
<todo-list >
326
334
<template v-slot:default =" slotProps" >
327
335
<i class =" fas fa-check" ></i >
328
- <span class =" green" >{{ slotProps.item }}<span >
336
+ <span class =" green" >{{ slotProps.item }}</ span >
329
337
</template >
330
338
331
339
<template v-slot:other =" otherSlotProps" >
332
340
...
333
341
</template >
334
- </current-user >
342
+ </todo-list >
335
343
```
336
344
337
345
### スロットプロパティの分割代入
@@ -358,7 +366,7 @@ function (slotProps) {
358
366
``` html
359
367
<todo-list v-slot =" { item: todo }" >
360
368
<i class =" fas fa-check" ></i >
361
- <span class =" green" >{{ todo }}<span >
369
+ <span class =" green" >{{ todo }}</ span >
362
370
</todo-list >
363
371
```
364
372
@@ -387,7 +395,6 @@ function (slotProps) {
387
395
388
396
` v-on ` や ` v-bind ` と同様に ` v-slot ` にも省略記法があり、引数の前のすべての部分 (` v-slot: ` ) を特別な記号 ` # ` で置き換えます。例えば、` v-slot:header ` は ` #header ` に書き換えることができます:
389
397
390
-
391
398
``` html
392
399
<base-layout >
393
400
<template #header >
0 commit comments