Javascript Vue js watcher不会对更改做出反应
我已经看到了一些关于vue.js watchers的问题,但我没有找到一个解决我的问题的问题,所以这里是: 在我的SomeComponent.vue中,我使用以下代码:Javascript Vue js watcher不会对更改做出反应,javascript,vue.js,vue-component,Javascript,Vue.js,Vue Component,我已经看到了一些关于vue.js watchers的问题,但我没有找到一个解决我的问题的问题,所以这里是: 在我的SomeComponent.vue中,我使用以下代码: ... props: ['value'] , watch: { value(val) { console.log(val); } }, 在使用此组件的父vue页面中,我使用了以下功能: <template> <div> <SomeCompon
...
props: ['value']
,
watch: {
value(val) {
console.log(val);
}
},
在使用此组件的父vue页面中,我使用了以下功能:
<template>
<div>
<SomeComponent
v-model="test"
></SomeComponent>
</div>
</template>
data() {
return {
test: {}
};
},
created() {
this.test = this.DoSomething();
},
这是因为您的
道具
是一个对象
要深入观察,您可以这样做:
watch: {
value: {
handler(val) {
console.log(val);
},
deep: true
}
},
而在created
DOM中还没有呈现。所以,您发送给子组件的道具尚未更新
和其他答案一样,更改对象的正确方法是使用this.$set
:
mounted() {
this.$set(this.test, 'Prop1', this.DoSomething())
this.$set(this.test, 'Prop2', 'Test')
},
这是因为您的
道具
是一个对象
要深入观察,您可以这样做:
watch: {
value: {
handler(val) {
console.log(val);
},
deep: true
}
},
而在created
DOM中还没有呈现。所以,您发送给子组件的道具尚未更新
和其他答案一样,更改对象的正确方法是使用this.$set
:
mounted() {
this.$set(this.test, 'Prop1', this.DoSomething())
this.$set(this.test, 'Prop2', 'Test')
},
如报告中所述:
由于JavaScript的限制,Vue无法检测到某些类型的更改。然而,有一些方法可以绕过它们来保持反应性
用于对象
Vue无法检测到属性的添加或删除。由于Vue在实例初始化期间执行getter/setter转换过程,因此数据
对象中必须存在一个属性,以便Vue对其进行转换并使其响应。例如:
Vue不允许向已创建的实例动态添加新的根级别被动属性。但是,可以使用this.$set(object,propertyName,value)
方法向嵌套对象添加被动属性:
在您的情况下,这将是:
created() {
this.$set(this.test, 'Prop1', this.DoSomething())
this.$set(this.test, 'Prop2', "Test")
},
或者,您也可以将许多属性指定给现有对象,例如,使用object.assign()
this.test = Object.assign({}, this.test, { 'Prop1': 1, 'Prop2': 2 })
如报告中所述:
由于JavaScript的限制,Vue无法检测到某些类型的更改。然而,有一些方法可以绕过它们来保持反应性
用于对象
Vue无法检测到属性的添加或删除。由于Vue在实例初始化期间执行getter/setter转换过程,因此数据
对象中必须存在一个属性,以便Vue对其进行转换并使其响应。例如:
Vue不允许向已创建的实例动态添加新的根级别被动属性。但是,可以使用this.$set(object,propertyName,value)
方法向嵌套对象添加被动属性:
在您的情况下,这将是:
created() {
this.$set(this.test, 'Prop1', this.DoSomething())
this.$set(this.test, 'Prop2', "Test")
},
或者,您也可以将许多属性指定给现有对象,例如,使用object.assign()
this.test = Object.assign({}, this.test, { 'Prop1': 1, 'Prop2': 2 })
欢迎光临。我认为在创建的中更改不会触发监视
,因为值在发送到子组件之前会更改。欢迎光临。我认为在创建的中更改不会触发监视,因为值在发送到子组件之前会更改。