File tree Expand file tree Collapse file tree 2 files changed +18
-14
lines changed Expand file tree Collapse file tree 2 files changed +18
-14
lines changed Original file line number Diff line number Diff line change @@ -470,25 +470,27 @@ CompilerProto.define = function (key, binding) {
470470 log ( ' defined root binding: ' + key )
471471
472472 var compiler = this ,
473- data = compiler . data ,
474- vm = compiler . vm ,
475- value = binding . value = data [ key ] // save the value before redefinening it
476-
477- if ( utils . typeOf ( value ) === 'Object' && value . $get ) {
478- compiler . markComputed ( binding )
479- }
473+ data = compiler . data ,
474+ vm = compiler . vm ,
475+ ob = data . __observer__
480476
481477 if ( ! ( key in data ) ) {
482478 data [ key ] = undefined
483479 }
484480
485- // if the data object is already observed, that means
486- // this binding is created late. we need to observe it now .
487- if ( data . __observer__ ) {
481+ // if the data object is already observed, but the key
482+ // is not observed, we need to add it to the observed keys .
483+ if ( ob && ! ( key in ob . values ) ) {
488484 Observer . convert ( data , key )
489485 }
490486
487+ var value = binding . value = data [ key ]
488+ if ( utils . typeOf ( value ) === 'Object' && value . $get ) {
489+ compiler . markComputed ( binding )
490+ }
491+
491492 Object . defineProperty ( vm , key , {
493+ enumerable : ! binding . isComputed ,
492494 get : binding . isComputed
493495 ? function ( ) {
494496 return compiler . data [ key ] . $get ( )
Original file line number Diff line number Diff line change @@ -129,14 +129,16 @@ function convert (obj, key) {
129129 if ( ( keyPrefix === '$' || keyPrefix === '_' ) && key !== '$index' ) {
130130 return
131131 }
132- var observer = obj . __observer__ ,
133- val = obj [ key ] ,
134- values = observer . values
135- values [ key ] = val
136132 // emit set on bind
137133 // this means when an object is observed it will emit
138134 // a first batch of set events.
135+ var observer = obj . __observer__ ,
136+ values = observer . values ,
137+ val = values [ key ] = obj [ key ]
139138 observer . emit ( 'set' , key , val )
139+ if ( Array . isArray ( val ) ) {
140+ observer . emit ( 'set' , key + '.length' , val . length )
141+ }
140142 Object . defineProperty ( obj , key , {
141143 get : function ( ) {
142144 var value = values [ key ]
You can’t perform that action at this time.
0 commit comments