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" }],
      }
      // data: [
      //   {
      //     name: "张三",
      //     age: "18",
      //     favorite: "sleep"
      //   },
      //   {
      //     name: "李四",
      //     age: "20",
      //     favorite: "football"
      //   },
      //   {
      //     name: "王二",
      //     age: "30",
      //     favorite: "eating"
      //   },
      //   {
      //     name: "麻子",
      //     age: "40",
      //     favorite: "honghong"
      //   }
      // ]
    };
  },
  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>

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Vue中,我们可以使用v-html指令来引入HTML代码片段。 v-html指令可以将一个属性值作为HTML代码动态插入到元素中,并将其渲染为真实的HTML内容。这使得我们可以将包含HTML代码的变量或表达式作为内容插入到模板中。 要使用v-html指令,首先需要在Vue实例的data选项中定义一个属性来存储HTML代码片段。例如,我们可以在data中定义一个名为htmlCode的属性,并将需要的HTML代码字符串赋值给它。 接下来,在模板中的需要插入HTML的元素上使用v-html指令,并将要插入HTML代码片段绑定到该指令的属性值上。例如,我们可以在需要插入HTML的div元素上使用v-html指令,并将htmlCode属性绑定到它上面。 最后,在Vue实例中,我们可以通过修改htmlCode属性的值来动态地改变插入HTML代码片段。Vue会自动检测这个变化并更新渲染HTML内容。 需要注意的是,由于v-html指令将属性值作为纯HTML内容渲染,我们需要确保这个属性值是可信的,以避免XSS攻击。因此,在使用v-html指令时,我们应该只使用由可信源生成的HTML片段。 总而言之,使用v-html指令可以方便地引入HTML代码片段,并将其作为真实的HTML内容进行渲染。这使得我们可以更灵活地动态地更新页面内容。 ### 回答2: 在Vue中,引入HTML代码片段可以通过v-html指令实现。v-html指令用于将数据作为HTML代码片段进行解析和渲染。 首先,在Vue组件中定义一个数据属性,用于存储要引入的HTML代码片段,例如: data() { return { htmlCode: '<p>这是一段引入的HTML代码。</p>' } } 然后,在模板中使用v-html指令引入该HTML代码片段,例如: <template> <div v-html="htmlCode"></div> </template> 上述代码中,通过v-html指令将htmlCode的值作为HTML代码片段进行解析和渲染。在这个例子中,页面会显示一段带有"这是一段引入的HTML代码。"的段落。 需要注意的是,使用v-html指令时,需要确保引入的HTML代码是可信任的,因为不经过HTML转义的代码容易引起安全问题。因此,在引入HTML代码片段前,最好对其进行安全校验,以防止恶意代码的注入。 最后,通过上述步骤,就可以在Vue中引入HTML代码片段,并使用v-html指令将其动态渲染页面上。 ### 回答3: 在vue中引入HTML代码片段有多种方式: 1. v-html指令:使用v-html指令可以将一个HTML代码片段插入到指定的元素中。在模板中使用v-html指令,在绑定的表达式中返回HTML代码片段即可。例如: ```html <div v-html="htmlCode"></div> ``` 在Vue实例中,通过将htmlCode属性设置为HTML代码片段的字符串,即可将代码片段插入到该div元素中。 2. 过滤器:在Vue中,可以创建过滤器来处理HTML代码片段的引入。首先,要在Vue实例中注册一个全局过滤器: ```javascript Vue.filter('htmlFilter', function(value) { return value; }) ``` 在模板中使用该过滤器: ```html <div>{{ htmlCode | htmlFilter }}</div> ``` 同样,将htmlCode属性设置为HTML代码片段的字符串,即可通过过滤器将代码片段插入到该div元素中。 3. 组件化:将HTML代码片段封装为一个Vue组件,在需要使用的地方引入该组件即可。首先,创建一个组件,例如名为HTMLSnippet的组件: ```javascript Vue.component('HTMLSnippet', { template: '<div>{{ htmlCode }}</div>', props: ['htmlCode'] }) ``` 然后,在需要引入HTML代码片段的地方使用该组件: ```html <HTMLSnippet :htmlCode="htmlCode"></HTMLSnippet> ``` 将htmlCode属性设置为HTML代码片段的字符串,并将其作为HTMLSnippet组件的属性传递即可。 以上是三种常见的在Vue中引入HTML代码片段的方式,根据实际需求选择适合的方式即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值