diff --git a/src/core/instance/render-helpers/bind-object-props.js b/src/core/instance/render-helpers/bind-object-props.js index 9a7b46df..f1b34ae2 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 3d29c984..7e4827dc 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 => {