Vue.js Vue是否有双边绑定?
编辑HTML元素时,对象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: {
@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>
这是一个例子