From 00d11a9e0e8d819d03e395b68aa4737247d0629b Mon Sep 17 00:00:00 2001 From: Justin Berger Date: Tue, 10 Nov 2015 23:18:42 -0700 Subject: [PATCH] Fixed bug when calling defineReactive on non-existent field with convertAllProperties on --- src/observer/index.js | 4 ++-- test/unit/specs/directives/public/for/for_spec.js | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/observer/index.js b/src/observer/index.js index 790189d3937..27e1253a3a3 100644 --- a/src/observer/index.js +++ b/src/observer/index.js @@ -181,8 +181,8 @@ function defineReactive (obj, key, val) { if (property && property.configurable === false) { return } - getter = property.get - setter = property.set + getter = property && property.get + setter = property && property.set } var childOb = Observer.create(val) diff --git a/test/unit/specs/directives/public/for/for_spec.js b/test/unit/specs/directives/public/for/for_spec.js index e979be04b53..182c16688a1 100644 --- a/test/unit/specs/directives/public/for/for_spec.js +++ b/test/unit/specs/directives/public/for/for_spec.js @@ -1,5 +1,6 @@ var _ = require('../../../../../../src/util') var Vue = require('../../../../../../src/vue') +var config = require('../../../../../../src/config') if (_.inBrowser) { describe('v-for', function () { @@ -8,6 +9,7 @@ if (_.inBrowser) { beforeEach(function () { el = document.createElement('div') spyOn(_, 'warn') + config.convertAllProperties = false }) it('objects', function (done) { @@ -21,6 +23,18 @@ if (_.inBrowser) { assertMutations(vm, el, done) }) + it('objects with convertAllProperties on', function (done) { + config.convertAllProperties = true + var vm = new Vue({ + el: el, + data: { + items: [{a: 1}, {a: 2}] + }, + template: '
{{$index}} {{item.a}}
' + }) + assertMutations(vm, el, done) + }) + it('primitives', function (done) { var vm = new Vue({ el: el,