v-html渲染組件問題
由于前面對html進(jìn)行過解析,今天想用vue拖拽,實(shí)現(xiàn)一手類似快站那種自動(dòng)生成代碼,結(jié)果就遇到了拖拽組件過去怎么無法解析的問題,因?yàn)関ue的v-html為了防止xss攻擊只能解析html

思路
先實(shí)現(xiàn)簡單頁面 分三塊左中右,左邊是需要拖動(dòng)的組件,中間是用于組件排列顯示,右邊是解析出的代碼
左邊組件列表代碼
<div ref="test" >
<one-component :title="title[0]" element="<el-radio v-model='radio' label='1'>備選項(xiàng)</el-radio>">
<el-radio slot="component" v-model="radio" label="1">備選項(xiàng)</el-radio>
</one-component>
</div>
</template>
<script>
import OneComponent from '../components/oneComponent'
export default {
name: '',
data() {
return {
radio: '2',
title: ['Radio 單選框']
}
},
components:{
OneComponent
},
}
</script>
<style lang="stylus" scoped>
</style>
中間組件顯示代碼
<div class="all">
<el-form label-width="80px" label-position="left" :model="ruleForm" :rules="rules">
<el-form-item label="模擬寬" prop="inputW">
<el-input v-model="ruleForm.inputW" placeholder="請輸入寬"></el-input>
</el-form-item>
<el-form-item label="模擬高" prop="inputH">
<el-input v-model="ruleForm.inputH" placeholder="請輸入高"></el-input>
</el-form-item>
</el-form>
<Variablebox
class="box"
:width="ruleForm.inputW"
:height="ruleForm.inputH"
></Variablebox>
</div>
</template>
<script>
import Variablebox from "../components/Variablebox";
export default {
name: "",
data() {
var checkSize = (rule, value, callback) => {
console.log(value);
if (value < 500 || value > 1000) {
callback(new Error("建議500 ~ 1000內(nèi)的數(shù)字"));
} else if (!Number.isInteger(Number(value))) {
callback(new Error("請輸入數(shù)字值"));
} else {
callback();
}
};
return {
ruleForm: {
inputW: 500,
inputH: 500
},
rules: {
inputW: [{ validator: checkSize, trigger: "blur" }],
inputH: [{ validator: checkSize, trigger: "blur" }]
}
};
},
methods: {
},
components: {
Variablebox
}
};
</script>
<style lang="stylus" scoped>
.all
padding: 0 20px
display: flex
flex-direction: column
</style>
接下來實(shí)現(xiàn)組件的拖拽使用drag和drop 將組件顯示在Variablebox頁面上,使用v-html無效后,百度了一下,發(fā)現(xiàn)基本上叫使用vue.Vue.compile( template ) 和render但是沒給例子
compile是將一個(gè)模板字符串編譯成 render 函數(shù),就是最后
都是render調(diào)用createElement,轉(zhuǎn)化成html,但是我們我們是直接渲染
</el-radio slot="component" v-model="radio" label="1"/>
所以個(gè)人
感覺行不通,最后只能嘗試新建組件然后掛載上去
new Vue({
// el: ‘#app'
template: this.ele,
data:{
radio: '2'
},
}).$mount("#apps");
這樣算是暫時(shí)決解掉這個(gè)問題吧
vue中運(yùn)用v-html渲染標(biāo)簽

獲取后臺(tái)數(shù)據(jù)帶 標(biāo)簽 內(nèi)容,需要渲染到頁面展示。最終效果如下:圖文排版

1.首先拿到數(shù)據(jù),單獨(dú)處理

2.接著在html中輸出即可

相關(guān)文章
vue結(jié)合leaflet實(shí)現(xiàn)地圖放大鏡
放大鏡在很多地方都可以使用的到,本文主要介紹了vue結(jié)合leaflet實(shí)現(xiàn)地圖放大鏡,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
Vue2集成Lodop插件實(shí)現(xiàn)在線打印功能
這篇文章主要為大家詳細(xì)介紹了Vue2如何集成Lodop插件實(shí)現(xiàn)在線打印功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-03-03
vue自定義權(quán)限指令的實(shí)現(xiàn)
本文主要介紹了vue自定義權(quán)限指令的實(shí)現(xiàn)2024-05-05
vue3使用vuedraggable和grid實(shí)現(xiàn)自定義拖拽布局方式
這篇文章主要介紹了vue3使用vuedraggable和grid實(shí)現(xiàn)自定義拖拽布局方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
在vue3項(xiàng)目中給頁面添加水印的實(shí)現(xiàn)方法
這篇文章主要給大家介紹一下在vue3項(xiàng)目中添加水印的實(shí)現(xiàn)方法,文中有詳細(xì)的代碼示例供大家參考,具有一定的參考價(jià)值,感興趣的小伙伴跟著小編一起來看看吧2023-08-08
vue中img src 動(dòng)態(tài)加載本地json的圖片路徑寫法
這篇文章主要介紹了vue中的img src 動(dòng)態(tài)加載本地json的圖片路徑寫法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04
詳解如何在Vue項(xiàng)目中發(fā)送jsonp請求
這篇文章主要介紹了詳解如何在Vue項(xiàng)目中發(fā)送jsonp請求,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
vue-cli之引入Bootstrap問題(遇到的坑,以及解決辦法)
這篇文章主要介紹了vue-cli之引入Bootstrap問題(遇到的坑,以及解決辦法),具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10
windows下vue.js開發(fā)環(huán)境搭建教程
這篇文章主要為大家詳細(xì)介紹了windows下vue.js開發(fā)環(huán)境搭建教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03

