mirror of https://github.com/vuejs/vue.git
more tuning
This commit is contained in:
parent
ef7430d5b4
commit
77c9b8bfe7
|
|
@ -45,6 +45,11 @@ exports._init = function (options) {
|
|||
this._children = []
|
||||
if (this.$parent) {
|
||||
this.$parent._children.push(this)
|
||||
var root = this.$parent
|
||||
while (root.$parent) {
|
||||
root = root.$parent
|
||||
}
|
||||
this.$root = root
|
||||
}
|
||||
|
||||
// merge options.
|
||||
|
|
|
|||
|
|
@ -20,8 +20,10 @@ exports._initScope = function () {
|
|||
? Object.create(parent.$scope)
|
||||
: {}
|
||||
// copy initial data into scope
|
||||
for (var key in data) {
|
||||
var keys = Object.keys(data)
|
||||
for (var key, i = 0, l = keys.length; i < l; i++) {
|
||||
// use defineProperty so we can shadow parent accessors
|
||||
key = keys[i]
|
||||
_.define(scope, key, data[key], true)
|
||||
}
|
||||
// create scope observer
|
||||
|
|
@ -138,10 +140,9 @@ exports._initProxy = function () {
|
|||
// scope --> vm
|
||||
|
||||
// proxy scope data on vm
|
||||
for (var key in scope) {
|
||||
if (scope.hasOwnProperty(key)) {
|
||||
_.proxy(this, scope, key)
|
||||
}
|
||||
var keys = Object.keys(scope)
|
||||
for (var i = 0, l = keys.length; i < l; i++) {
|
||||
_.proxy(this, scope, keys[i])
|
||||
}
|
||||
// keep proxying up-to-date with added/deleted keys.
|
||||
this.$observer
|
||||
|
|
@ -154,9 +155,10 @@ exports._initProxy = function () {
|
|||
|
||||
// vm --> scope
|
||||
|
||||
// proxy vm parent & root on scope
|
||||
_.proxy(scope, this, '$parent')
|
||||
_.proxy(scope, this, '$root')
|
||||
// $parent & $root are read-only on $scope
|
||||
scope.$parent = this.$parent
|
||||
scope.$root = this.$root
|
||||
// proxy $data
|
||||
_.proxy(scope, this, '$data')
|
||||
}
|
||||
|
||||
|
|
|
|||
14
src/vue.js
14
src/vue.js
|
|
@ -48,20 +48,6 @@ Vue.options = {
|
|||
|
||||
var p = Vue.prototype
|
||||
|
||||
/**
|
||||
* The $root recursively points to the root instance.
|
||||
*
|
||||
* @readonly
|
||||
*/
|
||||
|
||||
Object.defineProperty(p, '$root', {
|
||||
get: function () {
|
||||
return this.$parent
|
||||
? this.$parent.$root
|
||||
: this
|
||||
}
|
||||
})
|
||||
|
||||
/**
|
||||
* $data has a setter which does a bunch of
|
||||
* teardown/setup work
|
||||
|
|
|
|||
Loading…
Reference in New Issue