| 3900 | } |
| 3901 | |
| 3902 | function initLifecycle (vm) { |
| 3903 | var options = vm.$options; |
| 3904 | |
| 3905 | // locate first non-abstract parent |
| 3906 | var parent = options.parent; |
| 3907 | if (parent && !options.abstract) { |
| 3908 | while (parent.$options.abstract && parent.$parent) { |
| 3909 | parent = parent.$parent; |
| 3910 | } |
| 3911 | parent.$children.push(vm); |
| 3912 | } |
| 3913 | |
| 3914 | vm.$parent = parent; |
| 3915 | vm.$root = parent ? parent.$root : vm; |
| 3916 | |
| 3917 | vm.$children = []; |
| 3918 | vm.$refs = {}; |
| 3919 | |
| 3920 | vm._watcher = null; |
| 3921 | vm._inactive = null; |
| 3922 | vm._directInactive = false; |
| 3923 | vm._isMounted = false; |
| 3924 | vm._isDestroyed = false; |
| 3925 | vm._isBeingDestroyed = false; |
| 3926 | } |
| 3927 | |
| 3928 | function lifecycleMixin (Vue) { |
| 3929 | Vue.prototype._update = function (vnode, hydrating) { |