【发布时间】:2019-05-31 09:05:36
【问题描述】:
我不明白v-bind、v-model和v-bind.sync有什么区别?
也许为时已晚,但阅读文档后我无法区分v-bind.sync和v-model。
Passing Data to Child Components with Props
示例
我使用“vue-property-decorator”用 Typescript 编写了以下组件。我不知道如何在不必自己编写事件处理的情况下更新传递给组件的date 对象。如果你问我,它应该适用于 v-model 和 v-bind.sync 绑定(以及标记和装饰器中的相应更改)。
HTML
<Datepicker v-model="date"/>
打字稿
import { Component, Prop, Vue, Model } from "vue-property-decorator";
@Component({})
export default class Datepicker extends Vue {
@Prop()
private label!: string;
@Model()
private date!: Date;
private internalDate = new Date().toISOString().substr(0, 10);
private menu = false;
private onDateChanged() {
const isoDate = this.date.toISOString();
const newDate =
this.internalDate + this.date.toISOString().substring(10);
this.date = new Date(newDate);
}
}
每次我更改 this.date 对象时,都会收到警告:
避免直接改变prop,因为值会被覆盖 每当父组件重新渲染时。相反,使用数据或 基于道具值的计算属性。道具被变异: “日期”
【问题讨论】:
-
我不熟悉打字稿,但使用 v-model 是此类事情的推荐方式。您收到的警告可能是完全不同的事情,可能是转译器有问题并且源没有正确更新或类似的东西?
标签: vue.js