基于 Vue2 class 的数据 属性 不是反应式的
Vue2 class based data property is not reactive
我在基于 vue2 class 的组件中使用 typescript。使用自定义类型 KeyValuePair 时,sampleData prop 在组件中不是反应性的。
export type KeyValuePair<T> = {
[key in string | number]: T;
};
<template>
<div>
<!-- remains empty even after sampleData is updated ! -->
{{ sampleData }}
</div>
<template>
<script>
@Component()
export default class Sample extends Vue {
sampleData: KeyValuePair<string> = {};
//assume it gets called somehow
sampleMethod() {
this.sampleData['0'] = 'sample data';
}
}
</script>
还尝试从 getter 访问 sampleData 道具,但仍然无法正常工作。
任何解决方案或建议都可能有所帮助!
VueJS cannot detect property addition or deletion in objects。由于 0
密钥在运行时不存在于您的示例数据中,因此稍后添加它不会产生您期望的结果。
您将需要使用 Vue.set
来实现您想要的:
sampleMethod() {
Vue.set(this.sampleData, '0', 'sample data');
}
}
我在基于 vue2 class 的组件中使用 typescript。使用自定义类型 KeyValuePair 时,sampleData prop 在组件中不是反应性的。
export type KeyValuePair<T> = {
[key in string | number]: T;
};
<template>
<div>
<!-- remains empty even after sampleData is updated ! -->
{{ sampleData }}
</div>
<template>
<script>
@Component()
export default class Sample extends Vue {
sampleData: KeyValuePair<string> = {};
//assume it gets called somehow
sampleMethod() {
this.sampleData['0'] = 'sample data';
}
}
</script>
还尝试从 getter 访问 sampleData 道具,但仍然无法正常工作。 任何解决方案或建议都可能有所帮助!
VueJS cannot detect property addition or deletion in objects。由于 0
密钥在运行时不存在于您的示例数据中,因此稍后添加它不会产生您期望的结果。
您将需要使用 Vue.set
来实现您想要的:
sampleMethod() {
Vue.set(this.sampleData, '0', 'sample data');
}
}