Skip to content

Commit 68f7ec7

Browse files
committedMar 21, 2014
make fewer use of utils.defProtected
1 parent 5e638a0 commit 68f7ec7

File tree

2 files changed

+24
-33
lines changed

2 files changed

+24
-33
lines changed
 

‎src/compiler.js

+21-31
Original file line numberDiff line numberDiff line change
@@ -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) {
668658
CompilerProto.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.

‎src/directives/repeat.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ module.exports = {
6767
new Ctor({
6868
el : el,
6969
parent : this.vm,
70+
data : { $index: 0 },
7071
compilerOptions: {
7172
repeat: true,
7273
expCache: this.expCache
@@ -204,9 +205,10 @@ module.exports = {
204205
if (wrap) {
205206
raw = data
206207
alias = this.arg || '$value'
207-
data = { $index: index }
208+
data = {}
208209
data[alias] = raw
209210
}
211+
data.$index = index
210212

211213
var el = this.el.cloneNode(true),
212214
Ctor = this.compiler.resolveComponent(el, data),
@@ -222,7 +224,6 @@ module.exports = {
222224

223225
// attach an ienumerable identifier
224226
data.__emitter__[this.identifier] = true
225-
vm.$index = index
226227

227228
if (wrap) {
228229
var self = this,

0 commit comments

Comments
 (0)
Please sign in to comment.