gpt4 book ai didi

javascript - Vue Watch没有触发

转载 作者:IT老高 更新时间:2023-10-28 23:20:17 30 4
gpt4 key购买 nike

尝试使用 vue watch 方法,但即使使用 deep:true 似乎也不会触发某些对象。

在我的组件中,我收到一个数组作为要创建的字段的 Prop 以下表格。我可以构建表单并将它们动态绑定(bind)到一个名为 crudModelCreate 的对象,一切正常(我在 vue 开发工具中看到,甚至按计划提交表单)

但是我在尝试观察该动态对象的变化时遇到了问题。

  <md-input v-for="(field, rowIndex) in fields" :key="field.id" v-model="crudModelCreate[field.name]" maxlength="250"></md-input>

...

data() {
return {
state: 1, // This gets changed somewhere in the middle and changes fine
crudModelCreate: {},
}
},
...
watch: {
'state': {
handler: function(val, oldVal) {
this.$emit("changedState", this.state);
// this works fine
},
},
'crudModelCreate': {
handler: function(val, oldVal) {
console.log("beep1")
this.$emit("updatedCreate", this.crudModelCreate);
// This doesn't work
},
deep: true,
immediate: true
},
}

最佳答案

来自文档

由于现代 JavaScript 的限制(以及 Object.observe 的废弃),Vue 无法检测到属性添加或删除。由于 Vue 在实例初始化期间执行 getter/setter 转换过程,因此数据对象中必须存在一个属性,以便 Vue 对其进行转换并使其具有响应性。

请查看 Reactivity in Depth https://v2.vuejs.org/v2/guide/reactivity.html#Change-Detection-Caveats

关于javascript - Vue Watch没有触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46666819/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com