Skip to content

Commit 890e237

Browse files
committed
fix #471 merging default data with already observed instance data
1 parent a5966e8 commit 890e237

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

src/util/merge-option.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ strats.data = function (parentVal, childVal, vm) {
4343
// mix default data into instance data
4444
for (var key in defaultData) {
4545
if (!instanceData.hasOwnProperty(key)) {
46-
instanceData[key] = defaultData[key]
46+
instanceData.$add(key, defaultData[key])
4747
}
4848
}
4949
return instanceData

test/unit/specs/util/merge-option_spec.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,25 @@ describe('Util - Option merging', function () {
207207
expect(res.data.b).toBe(2)
208208
})
209209

210+
it('already observed instance data merge with default data', function () {
211+
var Observer = require('../../../../src/observer')
212+
var instanceData = { a: 123 }
213+
// observe it
214+
Observer.create(instanceData)
215+
var res = merge(
216+
{
217+
data: function () { return { b: 234} }
218+
},
219+
{
220+
data: instanceData
221+
},
222+
{}
223+
)
224+
expect(res.data.a).toBe(123)
225+
expect(res.data.b).toBe(234)
226+
expect(Object.getOwnPropertyDescriptor(res.data, 'b').get).toBeTruthy()
227+
})
228+
210229
it('mixins', function () {
211230
var a = {}, b = {}, c = {}, d = {}
212231
var mixinA = { a: 1, directives: { a: a } }

0 commit comments

Comments
 (0)