Преглед изворни кода

remove vm reference from $data observer in $destroy

Evan You пре 11 година
родитељ
комит
5a68ab8412
2 измењених фајлова са 5 додато и 0 уклоњено
  1. 2 0
      src/api/lifecycle.js
  2. 3 0
      test/unit/specs/api/lifecycle_spec.js

+ 2 - 0
src/api/lifecycle.js

@@ -93,6 +93,8 @@ exports.$destroy = function (remove) {
   if (this.$el) {
     this.$el.__vue__ = null
   }
+  // remove reference from data ob
+  this._data.__ob__.removeVm(this)
   this._data =
   this._watchers =
   this._userWatchers =

+ 3 - 0
test/unit/specs/api/lifecycle_spec.js

@@ -143,7 +143,10 @@ if (_.inBrowser) {
       it('normal', function () {
         var vm = new Vue()
         expect(vm._isDestroyed).toBe(false)
+        var data = vm._data
+        expect(data.__ob__.vms.length).toBe(1)
         vm.$destroy()
+        expect(data.__ob__.vms.length).toBe(0)
         expect(vm._isDestroyed).toBe(true)
         expect(vm._watchers).toBeNull()
         expect(vm._userWatchers).toBeNull()