@@ -13,7 +13,6 @@ var Emitter = require('./emitter'),
1313 slice = [ ] . slice ,
1414 makeHash = utils . hash ,
1515 extend = utils . extend ,
16- def = utils . defProtected ,
1716 hasOwn = ( { } ) . hasOwnProperty ,
1817
1918 // hooks to register
@@ -59,33 +58,32 @@ function Compiler (vm, options) {
5958 utils . log ( '\nnew VM instance: ' + el . tagName + '\n' )
6059
6160 // set compiler properties
62- compiler . vm = el . vue_vm = vm
63- compiler . bindings = makeHash ( )
64- compiler . expCache = compiler . expCache || makeHash ( )
65- compiler . dirs = [ ]
66- compiler . deferred = [ ]
67- compiler . computed = [ ]
68- compiler . children = [ ]
69- compiler . emitter = new Emitter ( )
61+ compiler . vm = el . vue_vm = vm
62+ compiler . bindings = makeHash ( )
63+ compiler . expCache = compiler . expCache || makeHash ( )
64+ compiler . dirs = [ ]
65+ compiler . deferred = [ ]
66+ compiler . computed = [ ]
67+ compiler . children = [ ]
68+ compiler . emitter = new Emitter ( )
7069 compiler . emitter . _ctx = vm
71- compiler . delegators = makeHash ( )
70+ compiler . delegators = makeHash ( )
7271
73- // set inenumerable VM properties
74- def ( vm , '$' , makeHash ( ) )
75- def ( vm , ' $el' , el )
76- def ( vm , ' $options' , options )
77- def ( vm , ' $compiler' , compiler )
78- def ( vm , ' $event' , null , false , true )
72+ // set VM properties
73+ vm . $ = makeHash ( )
74+ vm . $el = el
75+ vm . $options = options
76+ vm . $compiler = compiler
77+ vm . $event = null
7978
80- // set parent
79+ // set parent & root
8180 var parentVM = options . parent
8281 if ( parentVM ) {
8382 compiler . parent = parentVM . $compiler
8483 parentVM . $compiler . children . push ( compiler )
85- def ( vm , ' $parent' , parentVM )
84+ vm . $parent = parentVM
8685 }
87- // set root
88- def ( vm , '$root' , getRoot ( compiler ) . vm )
86+ vm . $root = getRoot ( compiler ) . vm
8987
9088 // setup observer
9189 compiler . setupObserver ( )
@@ -122,26 +120,18 @@ function Compiler (vm, options) {
122120 // the user might have set some props on the vm
123121 // so copy it back to the data...
124122 for ( key in vm ) {
125- if ( typeof vm [ key ] !== 'function' ) {
123+ if ( key . charAt ( 0 ) !== '$' && typeof vm [ key ] !== 'function' ) {
126124 data [ key ] = vm [ key ]
127125 }
128126 }
129127
128+ // copy meta properties
130129 vm . $index = data . $index
131130 vm . $value = data . $value
132131 vm . $key = data . $key
133132
134133 // observe the data
135134 compiler . observeData ( data )
136-
137- // for repeated items, create index/key bindings
138- // because they are ienumerable
139- if ( compiler . repeat ) {
140- compiler . createBinding ( '$index' )
141- if ( data . $key ) {
142- compiler . createBinding ( '$key' )
143- }
144- }
145135
146136 // now parse the DOM, during which we will create necessary bindings
147137 // and bind the parsed directives
@@ -668,7 +658,7 @@ CompilerProto.defineProp = function (key, binding) {
668658CompilerProto . defineMeta = function ( key , binding ) {
669659 var vm = this . vm ,
670660 ob = this . observer ,
671- value = binding . value = vm [ key ]
661+ value = binding . value = this . data [ key ]
672662 // remove initital meta in data, since the same piece
673663 // of data can be observed by different VMs, each have
674664 // its own associated meta info.
0 commit comments