From 67e8b9efc379307e2a76979b3970043173091465 Mon Sep 17 00:00:00 2001 From: GU Yiling Date: Sat, 9 Mar 2019 01:00:47 +0800 Subject: [PATCH] fix: v-bind object should be overridable by single bindings (#9653) fix #9641 --- src/core/instance/render-helpers/bind-object-props.js | 8 +++++--- test/unit/features/directives/bind.spec.js | 5 ++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/core/instance/render-helpers/bind-object-props.js b/src/core/instance/render-helpers/bind-object-props.js index 9a7b46dfa95..f1b34ae2f1e 100644 --- a/src/core/instance/render-helpers/bind-object-props.js +++ b/src/core/instance/render-helpers/bind-object-props.js @@ -7,7 +7,8 @@ import { isObject, toObject, isReservedAttribute, - camelize + camelize, + hyphenate } from 'core/util/index' /** @@ -45,12 +46,13 @@ export function bindObjectProps ( : data.attrs || (data.attrs = {}) } const camelizedKey = camelize(key) - if (!(key in hash) && !(camelizedKey in hash)) { + const hyphenatedKey = hyphenate(key) + if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) { hash[key] = value[key] if (isSync) { const on = data.on || (data.on = {}) - on[`update:${camelizedKey}`] = function ($event) { + on[`update:${key}`] = function ($event) { value[key] = $event } } diff --git a/test/unit/features/directives/bind.spec.js b/test/unit/features/directives/bind.spec.js index 3d29c984369..7e4827dc061 100644 --- a/test/unit/features/directives/bind.spec.js +++ b/test/unit/features/directives/bind.spec.js @@ -234,7 +234,7 @@ describe('Directive v-bind', () => { template: ``, components: { test: { - template: '
', + template: '
{{ dataFoo }} {{ dataBar }}
', props: ['dataFoo', 'dataBar'] } }, @@ -245,8 +245,7 @@ describe('Directive v-bind', () => { } } }).$mount() - expect(vm.$el.getAttribute('data-foo')).toBe('foo') - expect(vm.$el.getAttribute('data-bar')).toBe('bar') + expect(vm.$el.textContent).toBe('foo bar') }) it('.sync modifier with bind object', done => {