• vue 动态插入渲染html


    <template>
      <div>
        <el-row type="flex" justify="center">
          <el-col :span="16">
            <el-card>
              <el-form :v-model="form" ref="form" :rules="rule" label-width="100px">
                <el-form-item label="newHtml" prop="newHtml">
                  <el-input v-model="form.newHtml" type="input"/>
                </el-form-item>
                <el-form-item label="newTemplate" prop="newTemplate">
                  <el-input v-model="form.newTemplate" type="textarea" :rows="10"/>
                </el-form-item>
              </el-form>
            </el-card>
          </el-col>
        </el-row>
        <el-row type="flex" justify="center">
          <el-col :span="16">
            <el-card header='newHtml' class="vhtml-area">
              <div v-html="form.newHtml">
                <span class="html-class">old word</span>
              </div>
            </el-card>
            <el-card header='newTemplate' class="vhtml-area">
              <div id="demo">
                <!-- <div v-for="item in data" :key="item.name">
                  <div>
                    <span>{{ item.name }}</span>
                    <span>{{ item.age }}</span>
                    <span>{{ item.favorite }}</span>
                  </div>
                </div>-->
              </div>
            </el-card>
          </el-col>
        </el-row>
      </div>
    </template>
    <script>
    import Vue from "vue";
    export default {
      name: "HelloWorld",
      data() {
        var check = (rule, value, callback) => {
          this.change();
        };
        return {
          form: {
            newHtml: '',
            newTemplate: `1`
          },
          rule: {
            newTemplate: [{ validator: check, trigger: "change" }],
          }
        
        };
      },
      methods: {
        change() {
          var MyComponent = Vue.extend({
            template: `<div>${this.form.newTemplate}</div>`,
            data() {
              return {
                data: [
                  {
                    name: "张三",
                    age: "18",
                    favorite: "sleep"
                  },
                  {
                    name: "李四",
                    age: "20",
                    favorite: "football"
                  },
                  {
                    name: "王二",
                    age: "30",
                    favorite: "eating"
                  },
                  {
                    name: "麻子",
                    age: "40",
                    favorite: "honghong"
                  }
                ]
              };
            }
          });
          var component = new MyComponent().$mount();
          var dom = document.querySelector("#demo");
          while (dom.hasChildNodes()) {
            dom.removeChild(dom.firstChild);
          }
          dom.appendChild(component.$el);
        }
      }
    };
    </script>
    
    <!-- Add "scoped" attribute to limit CSS to this component only -->
    <style scoped>
    .vhtml-area {
      min-height: 200px;
      margin-top: 20px;
    }
    .html-class{
      color: red;
    }
    </style>
  • 相关阅读:
    国家标准比例尺地形图说明(摘要自SuperMap Objects Document)
    常用日期函数
    CMD执行BCP命令
    如何利用.snk文件生成DLL文件中的Publickeytoken
    SQL SERVER数据库的表中修改字段属性被阻止“Prevent saving changes that require table recreation”
    如何生成DLL文件
    如何反编译DLL文件
    Visual Studio 2022激活密钥
    sqlserver跨数据库查询
    jQuery对象与DOM对象之间的转换
  • 原文地址:https://www.cnblogs.com/liaoshiqi/p/10911022.html
Copyright © 2020-2023  润新知