From c57ba3e622c5699ce2e657b0d9a71ce4bdd6dfba Mon Sep 17 00:00:00 2001 From: katashin Date: Tue, 22 Nov 2016 23:22:21 +0900 Subject: [PATCH] global mixin should not drop scope id (fix #4266) (#4274) --- src/core/instance/init.js | 1 + test/unit/features/global-api/mixin.spec.js | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/core/instance/init.js b/src/core/instance/init.js index 277daea1..5e25d9ab 100644 --- a/src/core/instance/init.js +++ b/src/core/instance/init.js @@ -72,6 +72,7 @@ export function resolveConstructorOptions (Ctor: Class) { Ctor.superOptions = superOptions extendOptions.render = options.render extendOptions.staticRenderFns = options.staticRenderFns + extendOptions._scopeId = options._scopeId options = Ctor.options = mergeOptions(superOptions, extendOptions) if (options.name) { options.components[options.name] = Ctor diff --git a/test/unit/features/global-api/mixin.spec.js b/test/unit/features/global-api/mixin.spec.js index 3590b5a6..fe6fd2a1 100644 --- a/test/unit/features/global-api/mixin.spec.js +++ b/test/unit/features/global-api/mixin.spec.js @@ -70,4 +70,18 @@ describe('Global API: mixin', () => { expect(vm.$el.textContent).toBe('hello') }) + + // #4266 + it('should not drop scopedId', () => { + const Test = Vue.extend({}) + Test.options._scopeId = 'foo' + + Vue.mixin({}) + + const vm = new Test({ + template: '

hi

' + }).$mount() + + expect(vm.$el.children[0].hasAttribute('foo')).toBe(true) + }) })