@@ -114,22 +114,28 @@ function Compiler (vm, options) {
114
114
}
115
115
}
116
116
117
+ // copy data properties to vm
118
+ // so user can access them in the created hook
119
+ extend ( vm , data )
120
+ vm . $data = data
121
+
117
122
// beforeCompile hook
118
123
compiler . execHook ( 'created' )
119
124
120
125
// the user might have set some props on the vm
121
126
// so copy it back to the data...
127
+ var vmProp
122
128
for ( key in vm ) {
123
- if ( key . charAt ( 0 ) !== '$' && typeof vm [ key ] !== 'function' ) {
124
- data [ key ] = vm [ key ]
129
+ vmProp = vm [ key ]
130
+ if (
131
+ key . charAt ( 0 ) !== '$' &&
132
+ typeof vmProp !== 'function' &&
133
+ data [ key ] !== vmProp
134
+ ) {
135
+ data [ key ] = vmProp
125
136
}
126
137
}
127
138
128
- // copy meta properties
129
- vm . $index = data . $index
130
- vm . $value = data . $value
131
- vm . $key = data . $key
132
-
133
139
// observe the data
134
140
compiler . observeData ( data )
135
141
@@ -621,7 +627,6 @@ CompilerProto.createBinding = function (key, directive) {
621
627
* and observe the initial value
622
628
*/
623
629
CompilerProto . defineProp = function ( key , binding ) {
624
-
625
630
var compiler = this ,
626
631
data = compiler . data ,
627
632
ob = data . __emitter__
@@ -656,21 +661,16 @@ CompilerProto.defineProp = function (key, binding) {
656
661
* not in the data.
657
662
*/
658
663
CompilerProto . defineMeta = function ( key , binding ) {
659
- var vm = this . vm ,
660
- ob = this . observer ,
661
- value = binding . value = this . data [ key ]
662
- // remove initital meta in data, since the same piece
663
- // of data can be observed by different VMs, each have
664
- // its own associated meta info.
664
+ var ob = this . observer
665
+ binding . value = this . data [ key ]
665
666
delete this . data [ key ]
666
- Object . defineProperty ( vm , key , {
667
+ Object . defineProperty ( this . vm , key , {
667
668
get : function ( ) {
668
669
if ( Observer . shouldGet ) ob . emit ( 'get' , key )
669
- return value
670
+ return binding . value
670
671
} ,
671
672
set : function ( val ) {
672
673
ob . emit ( 'set' , key , val )
673
- value = val
674
674
}
675
675
} )
676
676
}
0 commit comments