【发布时间】:2021-11-09 18:52:03
【问题描述】:
我有一个组件,其数据包含一个对象,这个对象有一个属性,它是一个数组。
<template>
<div>
<product-selector :selected-products="order.selectedProducts" v-model="order.selectedProducts"/>
</div>
</template>
data () {
return {
order: {
selectedProducts: [],
},
};
}
每次在产品选择器中选择/取消选择新产品时,我都会使用新数组发出一个“输入”事件。问题是父组件中的订单对象不是响应式的,也没有触发新的渲染事件。如果我不使用“订单”对象而是直接使用“selectedProducts”数组,它可以工作,但我不想使用这个解决方案。稍后我需要将订单对象传递给其他组件。
【问题讨论】:
-
你能显示发出事件的代码吗?
-
事件被正确发出,如果我直接在 v-model 中使用数组而不是对象属性,它就可以工作。问题是对象没有反应。
-
Vue 有一些反应性限制,这取决于您如何更改
selectedProducts数组。 -
我知道限制,这就是为什么我说“新数组”是为了让你知道它是一个新的参考;)
标签: javascript vue.js vue-reactivity