Javascript 自定义组件双向数据绑定更新而不发出事件
我正在尝试在自定义组件上实现双向数据绑定(v-model)。Javascript 自定义组件双向数据绑定更新而不发出事件,javascript,vue.js,Javascript,Vue.js,我正在尝试在自定义组件上实现双向数据绑定(v-model)。 我发现: lovingVue的值将传递给选中的道具。当发出具有新值的更改事件时,lovingVue属性将随之更新 请注意其中的部分:当发出带有新值的更改事件时,属性将随之更新 我有一个父组件(HelloWorld.vue),它有一个子组件列表(Note.vue)。这张纸条每一张都是可拖动的。父组件具有表示为对象数组的子组件列表,对于此数组的每个元素,使用v-for创建note.vue的一个实例,并使用v-model将其绑定到数组元素,
我发现: lovingVue的值将传递给选中的道具。当发出具有新值的更改事件时,lovingVue属性将随之更新 请注意其中的部分:当发出带有新值的更改事件时,
属性将随之更新
我有一个父组件(HelloWorld.vue),它有一个子组件列表(Note.vue)。这张纸条每一张都是可拖动的。父组件具有表示为对象数组的子组件列表,对于此数组的每个元素,使用v-for
创建note.vue的一个实例,并使用v-model
将其绑定到数组元素,如下所示:
<template v-for="(note, index) in notes">
<note v-model="note.value" :key="note.id" :ref="note.id"></note>
</template>
export default {
name: "Note",
model: {
prop: "note",
event: "even-this-is-not-working"
},
props: {
note: {
type: Object,
default: () => null
}
},
每当在note
prop的更新属性内部拖动注释时(但不发出更新的注释),但父组件中绑定的note
仍会更新。(我已经用vue开发工具验证了这一点,并在父组件的注释中添加了一个观察者)
代码沙盒:
尝试添加一个注释
,方法是单击添加注释
并将其拖动,您将看到即使在note.vue
没有发出任何事件时,也会触发父级中的观察者
我是不是理解错了?或者代码有什么问题吗?这是因为您传递对象,而在JS中,对象是通过引用传递的。您的note
组件中的propnote
内容与notes[x]的对象相同。值按标识(内存中的相同位置)显示,因此note
组件中对其属性的更新必须在HelloWorld
父组件中可见
仅当您希望替换notes[x]中的对象时,才需要v-model
。值由Note
组件内创建的不同对象创建
let user={name:'John'};
console.log(user.name);
让admin=user;//admin只是对现有对象的引用
admin.name='Pete';
console.log(user.name);/'Pete’,从“用户”参考中可以看到更改