我将 Vue.js 与 TypeScript 和vue-property-decorator
. 我想在父组件和子组件之间执行一些双向数据绑定。这是我正在尝试做的一个简单的想法:
父组件
<template>
<progress :is-loaded.sync="isLoaded"/>
</template>
@Component
export default class ParentComponent extends Vue {
get isLoaded() { return Store.getters["isLoaded"]; }
set isLoaded(value: boolean) { Store.commit("isLoaded", value); }
}
子组件
<template>
<progress :value="_value" min="0" max="100"></progress>
{{_isLoaded}}
</template>
@Component
export default class ChildComponent extends Vue {
@Prop()
public isLoaded: boolean;
public _isLoaded: boolean;
public _value: number;
public mounted() {
this._isLoaded = this.isLoaded;
this._value = this.value;
}
@Watch("isLoaded")
public onIsLoadedChanged() {
if (!isLoaded) {
// Animate _value from 0 to 100.
this._isLoaded = true;
this.$emit("update:isLoaded", this._isLoaded);
}
}
}
我真的必须使用两个字段isLoaded
以及_isLoaded
使用this.$emit
魔术字符串update:isLoaded
吗?所有这些语法似乎都很冗长,有没有更简单的方法?有什么方法可以封装其中的一些吗?