diff --git a/src/core/view/components/rich-text/index.vue b/src/core/view/components/rich-text/index.vue index cb6d6da1f26a9cf0777b0b72cd261a66ac4ca6b7..cada876025ac8e9f0b852706ba8ac23c7666ca56 100644 --- a/src/core/view/components/rich-text/index.vue +++ b/src/core/view/components/rich-text/index.vue @@ -38,7 +38,7 @@ export default { if (typeof nodes === 'string') { nodes = parseHtml(nodes) } - const nodeList = parseNodes(nodes, document.createDocumentFragment()) + const nodeList = parseNodes(nodes, document.createDocumentFragment(), this) nodeList.appendChild(this.$refs.sensor.$el) const content = this.$refs.content content.innerHTML = '' diff --git a/src/core/view/components/rich-text/nodes-parser.js b/src/core/view/components/rich-text/nodes-parser.js index 684444ff4cd713daa9d8cc6b39e810e5f688b3e5..d94b65012dc0fb889acf2b67e6926e77da46c33f 100644 --- a/src/core/view/components/rich-text/nodes-parser.js +++ b/src/core/view/components/rich-text/nodes-parser.js @@ -96,7 +96,13 @@ function decodeEntities (htmlString) { }) } -export default function parseNodes (nodes, parentNode) { +export default function parseNodes (nodes, parentNode, $vm) { + let scopeId = '' + while ($vm) { + !scopeId && (scopeId = $vm.$options._scopeId) + $vm = $vm.$parent + } + nodes.forEach(function (node) { if (!isPlainObject(node)) { return @@ -124,6 +130,7 @@ export default function parseNodes (nodes, parentNode) { Array.isArray(value) && (value = value.join(' ')) case 'style': elem.setAttribute(name, value) + scopeId && elem.setAttribute(scopeId, '') break default: if (tagAttrs.indexOf(name) !== -1) { @@ -146,4 +153,4 @@ export default function parseNodes (nodes, parentNode) { } }) return parentNode -} +}