首页 > 其他分享 >通过innerHTML vue不起作用

通过innerHTML vue不起作用

时间:2024-04-17 17:24:04浏览次数:23  
标签:vue set DOM 不起作用 视图 Vue innerHTML https

innerHTML 在 Vue 中直接使用可能不会如预期工作,因为 Vue 是数据驱动的,它期望你通过操作数据来更新视图,而不是直接操作 DOM。当你使用 v-html 指令时,Vue 会将内容作为 HTML 解析,但如果你直接修改 DOM 的 innerHTML,Vue 就无法追踪变动了。

解决方法:

  1. 使用 Vue 的数据绑定功能,而不是直接操作 innerHTML。将要显示的内容作为数据绑定到模板中,然后通过修改这些数据来更新视图。

<template>
  <div v-html="htmlContent"></div>
</template>
 
<script>
export default {
  data() {
    return {
      htmlContent: '<span>初始内容</span>'
    };
  },
  methods: {
    updateContent() {
      this.htmlContent = '<span>更新后的内容</span>';
    }
  }
};
</script>
  1. 如果你需要动态地插入 HTML 并保持 Vue 的响应性,可以使用 Vue 提供的 v-html 指令。

<template>
  <div v-html="dynamicHTML"></div>
</template>
 
<script>
export default {
  data() {
    return {
      dynamicHTML: '<span>初始内容</span>'
    };
  },
  methods: {
    updateHTML() {
      this.dynamicHTML = '<span>更新后的内容</span>';
    }
  }
};
</script>
  1. 如果你需要操作 DOM 并且确保 Vue 能够追踪变化,可以使用 Vue 提供的 Vue.set 方法或者 vm.$set 实例方法来确保新添加的属性是响应式的。

// 假设 vm 是 Vue 实例
vm.$set(vm.someObject, 'b', 'new value');

总结:在 Vue 中,尽可能避免直接操作 DOM,而是通过操作 Vue 实例上的数据来更新视图。这样做可以确保视图和数据之间的绑定始终保持同步。

参考:百度AI

参考2:https://cloud.tencent.com/developer/information/%E4%BD%BF%E7%94%A8innerHTML%E6%97%B6vue%20html%E4%B8%8D%E5%91%88%E7%8E%B0-video

参考3:https://www.cnblogs.com/hhyf/p/11409386.html

参考4:https://blog.csdn.net/qq_40792800/article/details/122427044(Vue.Set)

https://wenku.baidu.com/view/874e61a9463610661ed9ad51f01dc281e53a56a2.html?_wkts_=1713345575931&bdQuery=Vue.set+innerHTML

标签:vue,set,DOM,不起作用,视图,Vue,innerHTML,https
From: https://www.cnblogs.com/2008nmj/p/18141278

相关文章

  • vue中websocket的使用---详解
    一、什么是webscoketWebSockets 是一种先进的技术,它可以在用户的浏览器和服务器之间打开交互式通信会话。使用此API,可以向服务器发送消息并接收事件驱动的响应,而无需通过轮询服务器的方式以获得响应。 WebSockets这种技术中有一个接口名为WebSocket,它是一个用于连接WebSoc......
  • 点击菜单生成tabs(vue3.0)
    1.安装vuex npminstallvuex@next--save在main.js中引用vuex2.在main.js同级目录新建store/store.js文件 代码:import{createStore}from'vuex'exportdefaultcreateStore({ state:{ tabsList:[] }, mutations:{ addTab(state,tab){ //判断是否......
  • 08 Vue3项目搭建后台管理系统
    项目配置elementPlus1.下载安装npminstallelement-plus@element-plus/icons-vue2.main.ts全局注册import{createApp}from'vue';import{createPinia}from'pinia';//1.引入elementPlusimportElementPlusfrom'element-plus';//......
  • vue页面表格组件高度控制
    //浏览器窗口内部高度console.log("window.innerHeight",window.innerHeight);console.log("document.clientHeight",document.documentElement.clientHeight);console.log("body.clientHeight",document.body.clientHeight);//获取vue组件元素的高度console.l......
  • vue代理问题设置
    proxy:{'/api':{target:"http://192.168.10.253:8082",//跨域地址changeOrigin:true,//支持跨域rewrite:(path)=>path.replace(/^\/api/,"")//重写路径,替换/api}} c......
  • vue3 + vant4 checkbox多选弹框
    实现效果代码如下多选组件DictSelect.vue<template><van-popup:show="showPicker"position="bottom":style="{height:'34vh'}"><divclass="con"><divclass="confirmBtns"&......
  • vue dayjs 安装指定版本
    在Vue项目中安装指定版本的Day.js库,你可以使用npm或者yarn。以下是安装指定版本Day.js的步骤:打开终端(命令行)。转到你的Vue项目目录。执行以下命令,其中x.x.x替换为你想要安装的Day.js版本号。使用npm安装指定版本的Day.js:[email protected] 或者使用......
  • vue相关内容
    vue相关路径配置1.根目录下的vite.config.jsimport{fileURLToPath,URL}from'node:url'import{defineConfig}from'vite'importvuefrom'@vitejs/plugin-vue'importAutoImportfrom'unplugin-auto-import/vite'importComponen......
  • vue2 mixin 和 vue3 hook
    mixin1.逻辑函数的复用2vue组件中的选项式API(例如:data,computed,watch)或者组件的生命周期钩子(created、mounted、destroyed)使用方法mixins:[mixins],//注册mixin,这样mixin中所有的钩子函数等同于组件中钩子1mixin中的生命周期函数会和组件的生命周期函数一起合并执行。2......
  • 小程序跨端,vue移植
    技术选型由于bun1.1.3windows版还有很多不兼容的小bug,先用pnpmtauri+taro+nutUI:https://github.com/AClon314/tauri-taro-template如何评价京东的Taro项目?-知乎(等tarov4正式版再做,beta的模板现在空白无法启动)tauri+vuetify:https://github.com/AClon314/tauri-vuet......