diff --git a/src/util/lang.js b/src/util/lang.js index e53e9869434..29e450fa5a2 100644 --- a/src/util/lang.js +++ b/src/util/lang.js @@ -50,6 +50,10 @@ export function del (obj, key) { delete obj[key] var ob = obj.__ob__ if (!ob) { + if (obj._isVue) { + delete obj._data[key] + obj._digest() + } return } ob.dep.notify() diff --git a/test/unit/specs/observer/observer_spec.js b/test/unit/specs/observer/observer_spec.js index b4ed2f9b6fb..ea9ade50aae 100644 --- a/test/unit/specs/observer/observer_spec.js +++ b/test/unit/specs/observer/observer_spec.js @@ -286,6 +286,25 @@ describe('Observer', function () { expect(dep3.notify.calls.count()).toBe(2) }) + it('observing set/delete in Vm object', function (done) { + var el = document.createElement('div') + var vm = new Vue({ + el: el, + template: '