有的时候我们想在vue中直接显示一个html的网页,如果用富文本方式,那么内容就会太多,
我们希望只需填入url链接
那么怎么处理呢?
直接上代码

步骤一:
新建一个vue文件,命名为"HtmlPanel.vue",内容如下,直接ctrl+cv即可!
(为简洁,代码经过缩进,在使用时格式化以下即可,不影响使用)

<template>
  <div> <p v-html="html"></p></div>
</template>
<script>
export default {
props: {url: {required: true }},
  data() {return {html: ""};},
  watch: {url(value) {this.load(value);}},
  mounted() {this.load(this.url);},
  methods: {
    load(url) {
      if (url && url.length > 0) {
        let param = {accept: "text/html, text/plain"};
        this.$http.get(url, param).then(response => { this.html = response.data;}).catch(() => {this.html = "加载失败";});
      }
    }
  }
};
</script>

步骤二
使用上述的vue组件
在你的vue页面中添加如下代码

<template>
    <div>
      <HtmlPanel :url.sync="url1"/>
    </div>
</template>
<script>
import HtmlPanel from "../HtmlPanel.vue"; //根据实际路径导入
export default {
  components:{HtmlPanel},
  data() {
    return {
      url1:"http://www.baidu.com",// 这里填写你需要渲染的url网页
    }
  },
}
</script>

OK!就2个步骤,有帮助的话,麻烦点个赞。

此外
如果遇到跨域,那么请到以下这篇文章

https://blog.csdn.net/u010775335/article/details/110857411

HtmlPanel.vue中使用到的this.$http是什么?怎么引入?
只需安装axios

npm install axios -g

并在main.js中添加如下代码即可

import axios from "axios"
Vue.prototype.$http = axios;
Logo

基于 Vue 的企业级 UI 组件库和中后台系统解决方案,为数万开发者服务。

更多推荐