diff --git a/src/data.ts b/src/data.ts index 91e641a..259df50 100644 --- a/src/data.ts +++ b/src/data.ts @@ -19,7 +19,8 @@ export function collectDataFromConstructor (vm: Vue, Component: VueClass<Vue>) { if (key.charAt(0) !== '_') { Object.defineProperty(this, key, { get: () => vm[key], - set: value => vm[key] = value + set: value => vm[key] = value, + configurable: true }) } }) diff --git a/test/test-babel.js b/test/test-babel.js index 73cbd7f..b03c3df 100644 --- a/test/test-babel.js +++ b/test/test-babel.js @@ -90,4 +90,21 @@ describe('vue-class-component with Babel', () => { const vm = new MyComp() expect(vm.test).to.equal('foo') }) + + it('should not throw if property decorator declare some methods', () => { + const Test = createDecorator((options, key) => { + if (!options.methods) { + options.methods = {} + } + options.methods[key] = () => 'test' + }) + + @Component + class MyComp extends Vue { + @Test test + } + + const vm = new MyComp() + expect(vm.test()).to.equal('test') + }) })