温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何解决v-html渲染组件问题

发布时间:2021-05-30 17:57:30 来源:亿速云 阅读:610 作者:小新 栏目:开发技术

这篇文章主要介绍如何解决v-html渲染组件问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

由于前面对html进行过解析,今天想用vue拖拽,实现一手类似快站那种自动生成代码,结果就遇到了拖拽组件过去怎么无法解析的问题,因为vue的v-html为了防止xss攻击只能解析html

如何解决v-html渲染组件问题

思路

 先实现简单页面 分三块左中右,左边是需要拖动的组件,中间是用于组件排列显示,右边是解析出的代码

左边组件列表代码

  <div ref="test" >
    <one-component :title="title[0]" element="<el-radio v-model='radio' label='1'>备选项</el-radio>"> 
      <el-radio slot="component" v-model="radio" label="1">备选项</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内的数字"));
      } else if (!Number.isInteger(Number(value))) {
        callback(new Error("请输入数字值"));
      } 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>

接下来实现组件的拖拽使用drag和drop 将组件显示在Variablebox页面上,使用v-html无效后,百度了一下,发现基本上叫使用vue.Vue.compile( template ) 和render但是没给例子

compile是将一个模板字符串编译成 render 函数,就是最后
都是render调用createElement,转化成html,但是我们我们是直接渲染
</el-radio slot="component" v-model="radio" label="1"/>
所以个人
感觉行不通,最后只能尝试新建组件然后挂载上去

   new Vue({
        // el: ‘#app'
        template: this.ele,
         data:{
           radio: '2'
        },
      }).$mount("#apps");

这样算是暂时决解掉这个问题吧

vue中运用v-html渲染标签

如何解决v-html渲染组件问题

获取后台数据带 标签 内容,需要渲染到页面展示。最终效果如下:图文排版

如何解决v-html渲染组件问题

1.首先拿到数据,单独处理

如何解决v-html渲染组件问题

2.接着在html中输出即可

如何解决v-html渲染组件问题

以上是“如何解决v-html渲染组件问题”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI