我看到了一些关于vue的问题。js watchers,但我没有找到一个问题来处理我的问题,所以这里是:
在我的组件中。vue我使用以下代码:
...
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();
},
如果我添加了另一个属性,则不会再触发观察者:
<template>
<div>
<SomeComponent
v-model="test"
></SomeComponent>
</div>
</template>
data() {
return {
test: {}
};
},
created() {
this.test.Prop1 = this.DoSomething();
this.test.Prop2 = "Test";
},
编辑:在快乐的回答之后,我的组件部分现在看起来像这样:
...
props: ["value"],
watch: {
value: {
handler(val) {
console.log(val);
},
deep: true
}
},
如文件所述:
由于JavaScript的限制,Vue无法检测到某些类型的更改。然而,有一些方法可以绕过它们来保持反应性。
对于对象
Vue无法检测到属性的添加或删除。由于Vue在实例初始化期间执行getter/setter转换过程,因此数据
对象中必须存在一个属性,以便Vue对其进行转换并使其响应。例如:
var vm = new Vue({
data: {
a: 1
}
})
// `vm.a` is now reactive
vm.b = 2
// `vm.b` is NOT reactive
Vue不允许向已创建的实例动态添加新的根级别被动属性。但是,可以使用this向嵌套对象添加反应属性$设置(对象、属性名称、值)
方法:
在你的情况下,那将是:
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 })
这是因为您的prop
是一个Object
。
为了深入观察,你可以这样做:
watch: {
value: {
handler(val) {
console.log(val);
},
deep: true
}
},
而在created
DOM中还没有呈现。所以,您发送给子组件的道具尚未更新。参考链接
和其他答案一样,改变对象的正确方法是使用这个$设置
:
mounted() {
this.$set(this.test, 'Prop1', this.DoSomething())
this.$set(this.test, 'Prop2', 'Test')
},
无论我在Angular 8项目中添加了什么角度材质元素(材质选项卡、材质按钮切换、材质选择、材质输入…),它们都不会更新。例如,在“材质”选项卡中,会绘制涟漪效果,但不会更改选项卡。mat按钮切换显示了类似的行为。mat select中的选项不显示,mat input中的浮动标签不浮动。我的代码基本上来自角度材质页面: BrowserModule和BrowserAnimationsModule在A
我有一个在端口3001上运行的节点后端服务器,以及一个我尝试代理到该端口以获取数据的反应服务器。 现在,我已经在客户端文件夹的package.json文件中包含了“代理”行,告诉React将请求代理到端口3001。 然而,当我试图向服务器上的“test”路由发出一个简单的请求时,React代码不会代理这个请求。它将我发送到localhost:3000/test,而不是localhost:3001/
在这种情况下,我更改选择元素并调用数据更新方法。该方法从状态获取值。但是当数据更新时,状态还没有改变。当您再次调用数据更新时,状态已经更新了如何正确进行更新? 反应成分
我有一个名为子组件模型的输入变量。@Input()型号:任意; 我有一个父控件,它将更新的输入变量发送到child Component。 如何编写childComponent来响应模型的变化?我希望在模型更改时调用childComponent。 想法?
谁能给我解释一下....
我正在Laravel5.1中创建一个应用程序,它以前工作得很好。我在视图文件中所做的任何更改都会反映在浏览器中。现在,在过去3天中,浏览器中未反映任何更改。 以下是我的视图文件: 主人刀身php 我正在将css文件的名称更改为app。但是当我运行应用程序时,它会显示main。源代码中的css。 我在storage/framework中查找了缓存,它显示了带有旧代码“main”的视图文件。css“我