父子组件数据双向绑定
究其原因prop是单向传递的
第一次尝试(通过input事件与v-model的特殊关系) 子组件代码如下:
<template>
<van-field class="our-field-normal"
:value="this.va"
:label="this.label"
:placeholder="this.place"
@input="handleChange"></van-field>
</template>
<script lang="ts">
import {Component, Prop, Vue} from "vue-property-decorator";
@Component
export default class OurFieldNormal extends Vue {
//name: "our_field_normal"
@Prop()
private va!: string;
@Prop()
private label!: string;
@Prop()
private place!: string;
private handleChange(event: any) {
this.$emit('input', event);//关键所在,input事件会修改父组件value的值
}
}
</script>父组件代码如下:
<our-field-normal v-model="product.parameter" label="参数" place="请填写钻石参数"/>结果:一次有效,数据返回后会被清空,pass
第二次尝试(真正意义上的双向绑定) 子组件代码如下
<template>
<van-field class="our-field-normal"
:value="this.value"
:label="this.label"
:placeholder="this.place"
@input="handleChange"
/>
</template>
<script>
// import {Component, Prop, Vue} from "vue-property-decorator";
export default {
name: "our_field_normal",
props: ['value', 'label', 'place'],
model: {
prop: 'value',
event: 'change'
},
methods: {
handleChange(event) {
this.$emit('change', event);
}
}
}
</script>Last updated