File tree Expand file tree Collapse file tree 2 files changed +49
-0
lines changed
Expand file tree Collapse file tree 2 files changed +49
-0
lines changed Original file line number Diff line number Diff line change @@ -639,4 +639,25 @@ describe('Component slot', () => {
639639 expect ( vm . $el . textContent ) . toBe ( '2foo' )
640640 } ) . then ( done )
641641 } )
642+
643+ it ( 'the elements of slot should be updated correctly' , done => {
644+ const vm = new Vue ( {
645+ data : { n : 1 } ,
646+ template : '<div><test><span v-for="i in n" :key="i">{{ i }}</span><input value="a"/></test></div>' ,
647+ components : {
648+ test : {
649+ template : '<div><slot></slot></div>'
650+ }
651+ }
652+ } ) . $mount ( )
653+ expect ( vm . $el . innerHTML ) . toBe ( '<div><span>1</span><input value="a"></div>' )
654+ const input = vm . $el . querySelector ( 'input' )
655+ input . value = 'b'
656+ vm . n ++
657+ waitForUpdate ( ( ) => {
658+ expect ( vm . $el . innerHTML ) . toBe ( '<div><span>1</span><span>2</span><input value="a"></div>' )
659+ expect ( vm . $el . querySelector ( 'input' ) ) . toBe ( input )
660+ expect ( vm . $el . querySelector ( 'input' ) . value ) . toBe ( 'b' )
661+ } ) . then ( done )
662+ } )
642663} )
Original file line number Diff line number Diff line change @@ -152,4 +152,32 @@ describe('create-element', () => {
152152 } ) . $mount ( )
153153 expect ( 'Avoid using observed data object as vnode data' ) . toHaveBeenWarned ( )
154154 } )
155+
156+ it ( 'nested child elements should be updated correctly' , done => {
157+ const vm = new Vue ( {
158+ data : { n : 1 } ,
159+ render ( h ) {
160+ const list = [ ]
161+ for ( let i = 0 ; i < this . n ; i ++ ) {
162+ list . push ( h ( 'span' , i ) )
163+ }
164+ const input = h ( 'input' , {
165+ attrs : {
166+ value : 'a' ,
167+ type : 'text'
168+ }
169+ } )
170+ return h ( 'div' , [ [ ...list , input ] ] )
171+ }
172+ } ) . $mount ( )
173+ expect ( vm . $el . innerHTML ) . toBe ( '<span>0</span><input value="a" type="text">' )
174+ const el = vm . $el . querySelector ( 'input' )
175+ el . value = 'b'
176+ vm . n ++
177+ waitForUpdate ( ( ) => {
178+ expect ( vm . $el . innerHTML ) . toBe ( '<span>0</span><span>1</span><input value="a" type="text">' )
179+ expect ( vm . $el . querySelector ( 'input' ) ) . toBe ( el )
180+ expect ( vm . $el . querySelector ( 'input' ) . value ) . toBe ( 'b' )
181+ } ) . then ( done )
182+ } )
155183} )
You can’t perform that action at this time.
0 commit comments