Vue 模型未更新

2023-12-27

当我尝试更新自定义文本区域组件的模型数据时this.message='<span id="foo">bar</span>文本和 html 没有像应有的那样显示在 htmltextarea 标记中,但我可以在 Vue 开发工具的控制台中看到应用的更新。我还尝试切换到对象而不是字符串并使用Vue.set https://v2.vuejs.org/v2/guide/reactivity.html#Change-Detection-Caveats,但这也不起作用。

对于如何解决这个问题,有任何的建议吗?

目标与htmlTextArea组件的作用是从 htmlTextArea 标记中获取用户文本(这有效),操作该文本并将其绑定回文本区域,但其中包含 HTML。

自定义文本区域组件:

<template>
  <div contenteditable="true" @input="updateHTML" class="textareaRoot"></div>
</template>
<script>
export default {
  // Custom textarea 
  name: 'htmlTextArea',
  props:['value'],
  mounted: function () {
      this.$el.innerHTML = this.value;
  },
  methods: {
      updateHTML: function(e) {
          this.$emit('input', e.target.innerHTML);
      }
  }
}
</script>

其他组件:

<template>
...
<htmlTextArea id="textarea" v-model="message"></htmlTextArea>
...
</template>
<script>
      data: {
        return {
          message: 'something'//this works
        }
      }
     ...
     methods: {
      changeText() {
        this.message='<span id="foo">bar</span>'//this does not
      }
     },
     components: {
         htmlTextArea
     }
</script>

您需要在之后显式设置该值value道具改变。你可以watch https://v2.vuejs.org/v2/api/#watch for value change.

<template>
    <div contenteditable="true" @input="updateHTML" class="textareaRoot"></div>
</template>
<script>

export default {
  // Custom textarea
  name: "htmlTextArea",
  props: ["value"],
  mounted: function() {
    this.$el.innerHTML = this.value;
  },
  watch: {
      value(v) {
          this.$el.innerHTML = v;
      }
  },
  methods: {
    updateHTML: function(e) {
      this.$emit("input", e.target.innerHTML);
    }
  }
};
</script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue 模型未更新 的相关文章

  • 如何仅显示/隐藏此 bootstrapvue 表的第二列和第三列?

    下面的代码将显示 隐藏 a 中的所有列BootstrapVue桌子 代码的来源就是这里的答案 使用 bootstrap vue 组件和 bootstrap 3 动态显示 隐藏列 https stackoverflow com questio
  • 构建 Vue 微前端应用程序(带有路由和 vuex 存储)

    我需要帮助配置使用 Vuex Vue Router 和 Vue i18n 的微前端应用程序的构建 分发 TL DR 我在构建将导入到现有系统中的微前端应用程序时遇到问题 我们的团队尝试通过 vue cli service 和 vue web
  • 如何切换各个
  • 元素的类?
  • 当我切换变量时active在下面的代码中 activeCSS 类应用于列表中的所有元素 从列表中的所有元素中删除 如何单独定位列表元素 Todo List 示例具有类似的功能 待办事项 待办事项已完成 但它有点超出了我的技能范围 ul li
  • v-file-input .click() 不是函数

    我试图以编程方式触发 v file input 的 click 事件 因为它在 Vuetify 的文档中 但它显示一个错误this refs imagePicker click is not a function我在这里错过了什么吗 代码重
  • 无法通过 Vue.js 从 Laravel 后端下载文件 (pdf)(Axios 帖子)

    我在 Vue 中有一个多步骤表单 一旦收集到所有信息 我就会将结果发布到 Laravel 控制器 这是网站的经过验证的区域 我正在使用护照 所以本质上我有一个 Vue SPA 它是在 Laravel 5 7 框架内构建的网站的管理区域 Vu
  • vuejs 模板和 asp.net 部分视图,好的做法吗?

    我在网站中使用 Vue js 并将模板添加到 html 代码中 并将 js 代码添加到单个 js 文件中 所以我不想使用 vue Vuefy Browserfy 方法 而是稍后捆绑并缩小我的 js 文件 由于我必须使用 Asp Net MV
  • vue如何设置嵌套对象的默认道具

    我的道具是这样的 house kitchen sink 我尝试过类似的事情 但没有成功 props house type Object default gt kitchen sink 如何为此类对象设置默认道具 来自文档 对象或数组默认值必
  • nuxt中根据url参数动态加载组件

    我在 nuxt 中有一个页面 分为两部分 第一部分是一个普通的模板结构 填充了基于 url 参数的动态内容 第二部分是应根据此数据加载的组件 我正在尝试这样完成它
  • 如何使用 vue 观察对象数组中的特定属性

    我正在使用 vue js 2 5 2 我有一个对象数组 我想观察 forms selected 如果它发生变化 则调用一个函数 这是我的尝试 但显然这是不正确的 我尝试将数组放入 for 循环中以观察所选的每个对象的属性 watch for
  • Firestore onSnapshot() 方法多次触发

    我有一个带有多个路由和 vuex 的 vue cli 4 应用程序 Firestore 数据库已成功连接 我的应用程序立即反映从 Firestore 控制台应用于数据库的修改 在离开包含与 Firestore 同步 的组件的路线然后返回后
  • 在可组合项 vue3 中使用 props

    我正在将应用程序从 vue 2 升级到 vue 3 但在可组合项方面遇到了一些问题 我想在可组合项中使用道具 但它似乎不起作用 代码示例是从工作组件中提取的 当我将其留在组件中时 它可以正常工作 我假设defineProps不受可组合项支持
  • 如何为 VueJS 组件创建 v-model 修饰符?

    在VueJS中有一些v model修改预解析绑定值 例如v model trim从字符串中删除空格 如何创建自己的修改器 例如v model myparse今天嗯使用类似的东西 computed name get function retu
  • 使用 vue-cli 服务时如何禁用 linting?

    我正在使用以下命令使用 vue cli 运行我的项目 vue cli service 服务 open 如何禁用所有 linting 目前每次保存时都会重新进行 linting 并且更改代码需要很长时间 我已经把 lintOnSave fal
  • 如何销毁/卸载 vue.js 3 组件?

    我有一个相当大的vue js 2具有动态选项卡机制的应用程序 用户可以与应用程序打开和关闭选项卡进行交互 每个选项卡代表一条路线 为了实现这一点 我使用 vue router 并保持活动状态 如下例所示
  • 如何居中对齐表格 - PDFMAKE

    我可以使用 PDFMAKE 创建一张居中对齐 页面 的表格吗 已定义的对齐方式 样式中的 center 和标签表内的 table width auto body text PER ODO style tableHeader text VOL
  • VueJS - 跳过观察者的第一个更改

    我正在 VueJS 中为我 正在制作的应用程序创建一个组件 它有一些观察者在我的 var 更改时将逻辑应用到组件的其他部分 一旦组件初始化 它仍然需要由用户通过 Axios 完成一些事件后来自服务器的一些数据来设置 该数据通过主应用程序发出
  • 将变量从调用它的父页面传递给 Vue 组件

    我有一个简单的表格 显示了我的所有数据 主文件 php table class table table bordered table hover thead tr th Job Name th th Job Description th t
  • 在 Vue 3 的生产构建过程中从 Vue 模板中删除所有数据测试属性

    我在 TS 中使用 Vue3 最后一个 vue cli 我想在 vue loader 编译 vue 文件时获取所有节点 vnodes 元素 我需要读取节点属性并删除所有 数据测试 我尝试在 vue config js 中使用 module
  • 在上传之前预览图像 VUEjs [重复]

    这个问题在这里已经有答案了 我知道这个问题已经被问过 但我不知道如何在vuejs中使用代码 我尝试了很多但没有任何结果 我还添加了我的代码 有人可以帮帮我吗 这是我的代码 谢谢 html
  • vuejs中如何获取组件编译后的html内容

    我有一个这样的组件

随机推荐