我有一个父组件和一个子组件。子组件位于父组件的对话框内。并且显示或隐藏此对话框。
我的父组件
<template>
<div>
<v-dialog v-model="dialog">
<product-form></product-form>
</v-dialog>
</div>
</template>
Run Code Online (Sandbox Code Playgroud)
我的子组件(产品形式)
<template>
<div>
.....
<input type="text" v-model="data">
.....
</div>
</template>
<script>
export default {
data: () => ({
data: '',
}),
methods:{
onSubmitProduct(){
//send data to server
}
},
}
</script>
Run Code Online (Sandbox Code Playgroud)
每当显示对话框时,我都需要清除子窗体。问题是我通过父组件显示对话框。注意:我不想在子组件中使用 v-model,因为我需要从子组件而不是父组件将数据发送到服务器。
有人能帮我吗?
* **解决方案***
我能够使用 ref 解决问题。我不知道我的解决方案是否与良好做法背道而驰。但这是我能做到的最好的。
//parent component
<template>
<div>
<v-dialog v-model="dialog">
<product-form ref="childComponent"></product-form>
</v-dialog>
</div>
</template>
this.$refs.childComponent.resetForm();
Run Code Online (Sandbox Code Playgroud)
——
//child compopnent
<template>
<div>
.....
<input type="text" v-model="data">
.....
</div>
</template>
<script>
export default {
data: () => ({
data: '',
}),
methods:{
onSubmitProduct(){
//send data to server
},
resetForm(){
//code to reset form
}
},
}
</script>
Run Code Online (Sandbox Code Playgroud)
你也许应该让一辆公共汽车作为孩子的支撑。然后你可以发出一个孩子可以采取行动的事件。
new Vue({
el: '#app',
data: {
showing: false,
bus: new Vue()
},
methods: {
toggleDialog() {
this.showing = !this.showing;
this.bus.$emit('reset');
}
},
components: {
productForm: {
template: '#product-form-template',
props: ['bus'],
data() {
return {
value: 'you will never see this'
}
},
methods: {
resetForm() {
this.value = 'Form was reset';
}
},
created() {
this.bus.$on('reset', this.resetForm);
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
.dialog {
outline: 2px solid blue;
height: 200px;
}
Run Code Online (Sandbox Code Playgroud)
<script src="//unpkg.com/vue@latest/dist/vue.js"></script>
<div id="app">
<button @click="toggleDialog">Toggle dialog</button>
<div class="dialog" v-show="showing">
<product-form :bus="bus"></product-form>
</div>
</div>
<template id="product-form-template">
<div>
Type something here: <input v-model="value">
</div>
</template>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3509 次 |
最近记录: |