@@ -5,7 +5,7 @@ describe('Component scoped slot', () => {
5
5
const vm = new Vue ( {
6
6
template : `
7
7
<test ref="test">
8
- <template scope="props">
8
+ <template slot- scope="props">
9
9
<span>{{ props.msg }}</span>
10
10
</template>
11
11
</test>
@@ -31,11 +31,39 @@ describe('Component scoped slot', () => {
31
31
} ) . then ( done )
32
32
} )
33
33
34
+ it ( 'default slot (plain element)' , done => {
35
+ const vm = new Vue ( {
36
+ template : `
37
+ <test ref="test">
38
+ <span slot-scope="props">{{ props.msg }}</span>
39
+ </test>
40
+ ` ,
41
+ components : {
42
+ test : {
43
+ data ( ) {
44
+ return { msg : 'hello' }
45
+ } ,
46
+ template : `
47
+ <div>
48
+ <slot :msg="msg"></slot>
49
+ </div>
50
+ `
51
+ }
52
+ }
53
+ } ) . $mount ( )
54
+
55
+ expect ( vm . $el . innerHTML ) . toBe ( '<span>hello</span>' )
56
+ vm . $refs . test . msg = 'world'
57
+ waitForUpdate ( ( ) => {
58
+ expect ( vm . $el . innerHTML ) . toBe ( '<span>world</span>' )
59
+ } ) . then ( done )
60
+ } )
61
+
34
62
it ( 'with v-bind' , done => {
35
63
const vm = new Vue ( {
36
64
template : `
37
65
<test ref="test">
38
- <template scope="props">
66
+ <template slot- scope="props">
39
67
<span>{{ props.msg }} {{ props.msg2 }} {{ props.msg3 }}</span>
40
68
</template>
41
69
</test>
@@ -65,11 +93,11 @@ describe('Component scoped slot', () => {
65
93
} ) . then ( done )
66
94
} )
67
95
68
- it ( 'template slot' , done => {
96
+ it ( 'named scoped slot' , done => {
69
97
const vm = new Vue ( {
70
98
template : `
71
99
<test ref="test">
72
- <template slot="item" scope="props">
100
+ <template slot="item" slot- scope="props">
73
101
<span>{{ props.foo }}</span><span>{{ props.bar }}</span>
74
102
</template>
75
103
</test>
@@ -95,6 +123,34 @@ describe('Component scoped slot', () => {
95
123
} ) . then ( done )
96
124
} )
97
125
126
+ it ( 'named scoped slot (plain element)' , done => {
127
+ const vm = new Vue ( {
128
+ template : `
129
+ <test ref="test">
130
+ <span slot="item" slot-scope="props">{{ props.foo }} {{ props.bar }}</span>
131
+ </test>
132
+ ` ,
133
+ components : {
134
+ test : {
135
+ data ( ) {
136
+ return { foo : 'FOO' , bar : 'BAR' }
137
+ } ,
138
+ template : `
139
+ <div>
140
+ <slot name="item" :foo="foo" :bar="bar"></slot>
141
+ </div>
142
+ `
143
+ }
144
+ }
145
+ } ) . $mount ( )
146
+
147
+ expect ( vm . $el . innerHTML ) . toBe ( '<span>FOO BAR</span>' )
148
+ vm . $refs . test . foo = 'BAZ'
149
+ waitForUpdate ( ( ) => {
150
+ expect ( vm . $el . innerHTML ) . toBe ( '<span>BAZ BAR</span>' )
151
+ } ) . then ( done )
152
+ } )
153
+
98
154
it ( 'fallback content' , ( ) => {
99
155
const vm = new Vue ( {
100
156
template : `<test></test>` ,
@@ -120,7 +176,7 @@ describe('Component scoped slot', () => {
120
176
const vm = new Vue ( {
121
177
template : `
122
178
<test ref="test">
123
- <template slot="item" scope="props">
179
+ <template slot="item" slot- scope="props">
124
180
<span>{{ props.text }}</span>
125
181
</template>
126
182
</test>
@@ -158,7 +214,7 @@ describe('Component scoped slot', () => {
158
214
const vm = new Vue ( {
159
215
template : `
160
216
<test ref="test">
161
- <template slot="item" scope="props">
217
+ <template slot="item" slot- scope="props">
162
218
<span>{{ props.text }}</span>
163
219
</template>
164
220
</test>
@@ -221,7 +277,7 @@ describe('Component scoped slot', () => {
221
277
const vm = new Vue ( {
222
278
template : `
223
279
<test ref="test">
224
- <template slot="item" scope="props">
280
+ <template slot="item" slot- scope="props">
225
281
<span>{{ props.text || 'meh' }}</span>
226
282
</template>
227
283
</test>
@@ -246,7 +302,7 @@ describe('Component scoped slot', () => {
246
302
new Vue ( {
247
303
template : `
248
304
<test ref="test">
249
- <template slot="item" scope="props">
305
+ <template slot="item" slot- scope="props">
250
306
<span>{{ props.text }}</span>
251
307
</template>
252
308
</test>
@@ -343,8 +399,8 @@ describe('Component scoped slot', () => {
343
399
} ,
344
400
template : `
345
401
<child>
346
- <template :slot="a" scope="props">A {{ props.msg }}</template>
347
- <template :slot="b" scope="props">B {{ props.msg }}</template>
402
+ <template :slot="a" slot- scope="props">A {{ props.msg }}</template>
403
+ <template :slot="b" slot- scope="props">B {{ props.msg }}</template>
348
404
</child>
349
405
` ,
350
406
components : { Child }
@@ -389,10 +445,10 @@ describe('Component scoped slot', () => {
389
445
data : { names : [ 'foo' , 'bar' ] } ,
390
446
template : `
391
447
<test ref="test">
392
- <template v-for="n in names" :slot="n" scope="props">
448
+ <template v-for="n in names" :slot="n" slot- scope="props">
393
449
<span>{{ props.msg }}</span>
394
450
</template>
395
- <template slot="abc" scope="props">
451
+ <template slot="abc" slot- scope="props">
396
452
<span>{{ props.msg }}</span>
397
453
</template>
398
454
</test>
@@ -417,4 +473,34 @@ describe('Component scoped slot', () => {
417
473
expect ( vm . $el . innerHTML ) . toBe ( '<span>world foo</span> <span>world bar</span> <span>world abc</span>' )
418
474
} ) . then ( done )
419
475
} )
476
+
477
+ it ( 'scoped slot with v-for (plain elements)' , done => {
478
+ const vm = new Vue ( {
479
+ data : { names : [ 'foo' , 'bar' ] } ,
480
+ template : `
481
+ <test ref="test">
482
+ <span v-for="n in names" :slot="n" slot-scope="props">{{ props.msg }}</span>
483
+ <span slot="abc" slot-scope="props">{{ props.msg }}</span>
484
+ </test>
485
+ ` ,
486
+ components : {
487
+ test : {
488
+ data : ( ) => ( { msg : 'hello' } ) ,
489
+ template : `
490
+ <div>
491
+ <slot name="foo" :msg="msg + ' foo'"></slot>
492
+ <slot name="bar" :msg="msg + ' bar'"></slot>
493
+ <slot name="abc" :msg="msg + ' abc'"></slot>
494
+ </div>
495
+ `
496
+ }
497
+ }
498
+ } ) . $mount ( )
499
+
500
+ expect ( vm . $el . innerHTML ) . toBe ( '<span>hello foo</span> <span>hello bar</span> <span>hello abc</span>' )
501
+ vm . $refs . test . msg = 'world'
502
+ waitForUpdate ( ( ) => {
503
+ expect ( vm . $el . innerHTML ) . toBe ( '<span>world foo</span> <span>world bar</span> <span>world abc</span>' )
504
+ } ) . then ( done )
505
+ } )
420
506
} )
0 commit comments