Javascript 自定义组件双向数据绑定更新而不发出事件

Javascript 自定义组件双向数据绑定更新而不发出事件,javascript,vue.js,Javascript,Vue.js,我正在尝试在自定义组件上实现双向数据绑定(v-model)。 我发现: lovingVue的值将传递给选中的道具。当发出具有新值的更改事件时,lovingVue属性将随之更新 请注意其中的部分:当发出带有新值的更改事件时,属性将随之更新 我有一个父组件(HelloWorld.vue),它有一个子组件列表(Note.vue)。这张纸条每一张都是可拖动的。父组件具有表示为对象数组的子组件列表,对于此数组的每个元素,使用v-for创建note.vue的一个实例,并使用v-model将其绑定到数组元素,

我正在尝试在自定义组件上实现双向数据绑定(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
组件中的prop
note
内容与
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’,从“用户”参考中可以看到更改