注入Vue的2組分I有一個表格在管理區,其中用戶可以與簡碼輸入文本在它們:動態地從短碼
熱烘箱中於[溫度℃= 200]
什麼我想要的是temp
短碼可以在前端顯示時被解析並轉換成Vue 2組件。
這裏有一個簡單的Temperature.vue
組件:
<template>
<span class="temperature">
{{ celsius }}°C
</span>
</template>
<script>
import { mapGetters, mapActions } from 'vuex'
export default {
props: ['celsius'],
name: 'temperature'
}
</script>
而且這裏有一個簡單的Instructions.vue
組件將解析和渲染的簡文:
<template>
<div v-html="parseShortcodes(text)"></div>
</template>
<script>
import ShortcodeParser from 'meta-shortcodes'
import Temperature from 'Temperature.vue'
export default {
data:() => {
return {
text: 'Heat oven at [temp c=200]',
parser: ShortcodeParser()
}
},
components: [
Temperature
],
methods: {
parseShortcodes(text) {
return this.parser.parse(text)
}
},
created() {
this.parser.add('temp', function(options) {
return '<temperature :celsius="'+options.c+'"></temperature>'
})
}
}
</script>
解析工作正常,並打印替代在前端。但<temperature>
標籤是逐字呈現的,而不是Vue組件,這是有點期待的。在<溫度
烤箱預熱:攝氏度=「200」> < /溫度>
似乎我不能換行我的頭周圍是我應該採取什麼樣的步驟,其實際轉換進入我已經定義的Temperature
組件。它甚至有可能嗎?有沒有更正統的做法,我失蹤了?
使用v-html
來呈現文本也存在安全問題。我不一定要這樣做,但我猜測它更加遙遠,以期望Temperature
組件從一個轉義字符串中出現。我可以在插入數據庫之前始終進行清理,但如果可能的話,我仍然希望避免v-html
。
很酷,我喜歡這種方法。離我所有的東西不遠,真的......我會盡快測試它,讓你知道! –