vue.js - Vue模型不更新

标签 vue.js vuejs2

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

关于如何解决这个问题有什么建议吗?

htmlTextArea 的目标组件是从 htmlTextArea 标签中获取用户文本(这有效),操作此文本并将其绑定(bind)回文本区域,但其中包含 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 属性更改后显式设置值。你可以watchvalue 改变。

<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>

关于vue.js - Vue模型不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49809545/

相关文章:

javascript - 我怎样才能在vue js中传递字段Rating的值?

vue.js - Vuetify在明暗主题之间切换(使用vuex)

javascript - Vue 与 VCalendar 组件 : Keep data in sync with another Vue instance

vue.js - 移除当前页面的 Vuex 记录时如何处理导航?

javascript - 如何在 vuex 中将 2 个参数传递给 getter?

vue.js - Vue.js单文件组件导入外部js库

javascript - 无法读取 for 循环中未定义的 .style 属性(Vue.js)

vue.js - Vue + Pug - 动态属性名称

javascript - 为什么 nuxt 用 vue-chartjs 给我这个错误?

javascript - 调用 vuejs 方法的 jQuery 全局按键事件方法无法按预期工作。为什么?