我想从我的数据库中的字符串创建一个 vue 元素。
在这种情况下,它应该是带有笑脸表情符号的消息。我实际上将其保存为: Some text with Emoji: :santa::skin-tone-3:
,并将“::”之间的所有有效字符串替换为 <Emoji emoji=':santa::skin-tone-3:' :size='16' />
<template>
<span class=message v-html=convertedMessage></div>
</template>
<script>
import { Emoji } from 'emoji-mart-vue'
export default {
components: {
Emoji
},
computed:{
convertedMessage(){
return "Some text with Emoji: "+"<Emoji emoji=':santa::skin-tone-3:' :size='16' />"
}
}
}
</script>
但是渲染的元素应该是这样的:
<span data-v-7f853594="" style="display: inline-block; width: 32px; height: 32px; background-image: url("https://unpkg.com/emoji-datasource-apple@4.0.4/img/apple/sheets/64.png"); background-size: 5200%; background-position: 15.6863% 41.1765%;"></span>
我只得到:
<emoji emoji=":santa::skin-tone-3:" :size="16"></emoji>
按预期呈现此元素的最佳可能性是什么?
原文由 Jakob Graf 发布,翻译遵循 CC BY-SA 4.0 许可协议
这里有一些更简单的方法来做你通常想做的事情。如果您提供更多细节,您的正确方向可能是这些解决方案之一之前的策略模式,但这些解决方案之一可能是您想要的:
…会在这样的对象数组中绘制一堆组件(例如):{name: ‘myComponentName’, props: {foo: 1, bar: ‘baz’}}。
例如,这是一个创建动态 SVG 图标的组件,其中 SVG 的内容是从 JavaScript 变量动态注入的……
一个聪明的天才在这里为此写了一个 jsbin: http ://jsbin.com/fifatod/5/edit?html,js,output