在线程 中 v-model 在 Vue 2.x 中有哪些限制?,我学会了如何链接父子组件v-model
。建议的解决方案是:
--- ParentTemplate:
<Child v-model="formData"></Child>
-- ChildTemplate:
<input v-model="localValue">
-- ChildScript:
computed: {
localValue: {
get() {
return this.value;
},
set(localValue) {
this.$emit('input', localValue);
},
},
},
不幸的是,我无法将其重写为vue-class-component语法。下面的代码既不工作也不应该工作:
export default class TextEditor extends Vue {
@Prop({ type: String, required: true }) private readonly value!: string;
private get localValue(): string {
return this.value;
}
private set localValue(newValue: string) {
this.$emit("input", newValue);
}
}
关于如何在 vuejs 中基于类的组件中编写计算设置器的问题的答案不适用于 vue 组件属性,因为属性是只读的。所以我不能写this.value = newValue
。
直接value
使用有问题##
<EditorImplementation
:value="value"
@input="(value) => { onInput(value) }"
/>
@Component({
components {
EditorImplementation: CK_Editor.component
}
})
export default class TextEditor extends Vue {
@Prop({ type: String, required: true }) private readonly value!: string;
@Emit("input")
private onInput(value: string): void {
console.log("checkpoint");
console.log(this.value);
}
}
假设初始值为空字符串。
- 输入“f”
- 日志将是
"checkpoint" ""
- 输入“一”
- 日志将是
"checkpoint" "f"
- 输入“d”
- 日志将是
"checkpoint" "fa"
等等。