Vue.js Vue是否有双边绑定?

Vue.js Vue是否有双边绑定? ,vue.js,Vue.js,编辑HTML元素时,对象@message不会更改。使用Vue.js有什么简单的方法可以做到这一点吗?不幸的是,contenteditable不能与Vue绑定(如v-model)一起使用,建议您使用库来构建自己的组件 但是,如果您只是想做一些简单的事情并保持数据同步,您可以自己做: 查看模型 <p contenteditable="true" v-bind="message"></p> HTML new Vue({ el: '#app', methods: {

编辑HTML元素时,对象
@message
不会更改。使用Vue.js有什么简单的方法可以做到这一点吗?

不幸的是,
contenteditable
不能与
Vue
绑定(如
v-model
)一起使用,建议您使用库来构建自己的组件

但是,如果您只是想做一些简单的事情并保持数据同步,您可以自己做:

查看模型

<p contenteditable="true" v-bind="message"></p>
HTML

new Vue({
  el: '#app',
  methods: {
    updateMessage() {
        this.message = this.$refs.message.innerText;
    }
  },
  watch: {
    message() {
      this.$refs.message.innerText = this.message;
    }
  },
  data: {
    message: 'Hello'
  }
})

{{message}

正如您所见,在使用
contenteditable
时,您必须自己处理更新DOM的问题。我在这里实际做的是使用a来定位contenteditable,这样我就可以通过
this.$refs.message.innerText
获取内部文本。然后,我添加了一个
@keyup
事件,该事件调用
updateMessage
方法来更新
消息
数据属性。然后,我添加了一个
观察者
,它反转了这个过程,所以当消息被更新时,它会更新内容


下面是JSFIDLE:

不幸的是,
contenteditable
不能与
Vue
绑定(如
v-model
)一起使用,建议您使用一个库(如)来构建自己的组件

但是,如果您只是想做一些简单的事情并保持数据同步,您可以自己做:

查看模型

<p contenteditable="true" v-bind="message"></p>
HTML

new Vue({
  el: '#app',
  methods: {
    updateMessage() {
        this.message = this.$refs.message.innerText;
    }
  },
  watch: {
    message() {
      this.$refs.message.innerText = this.message;
    }
  },
  data: {
    message: 'Hello'
  }
})

{{message}

正如您所见,在使用
contenteditable
时,您必须自己处理更新DOM的问题。我在这里实际做的是使用a来定位contenteditable,这样我就可以通过
this.$refs.message.innerText
获取内部文本。然后,我添加了一个
@keyup
事件,该事件调用
updateMessage
方法来更新
消息
数据属性。然后,我添加了一个
观察者
,它反转了这个过程,所以当消息被更新时,它会更新内容


这里是JSFIDLE:

是的,它有一个双向绑定指令
v-model
,但它只对输入元素起作用。因此,与其使用
p
元素并用复杂的JS处理它,不如将
textarea
v-model
一起使用,这样就可以开箱即用了

  <p ref="message" contenteditable="true" @keyup="updateMessage" class="editable">{{message}}</p>


这是一个。

是的,它有一个双向绑定指令
v-model
,但它仅适用于输入元素。因此,与其使用
p
元素并用复杂的JS处理它,不如将
textarea
v-model
一起使用,这样就可以开箱即用了

  <p ref="message" contenteditable="true" @keyup="updateMessage" class="editable">{{message}}</p>

这是一个例子