大飞_dafei

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

vue-cli 中使用父子之间传值_父组件传值子组件_封装form表单

vue-cli 中使用父子之间传值_父组件传值子组件_封装form表单

使用prop属性,(借助v-bind绑定)

study01.vue 中代码

复制代码
<template>
    <div>
        <h3>这里是需求页面</h3>
        <v-form-work ref="form-work" :arrForm="tabsFormData"></v-form-work>
    </div>
</template>
<script>
    import Vue from 'vue'
    import Antd, { message,Select } from 'ant-design-vue'
    import 'ant-design-vue/dist/antd.css'
    import vFormWork from '../../components/formWork'
    
    Vue.use(Antd);


    export default {
        components:{
            vFormWork
        },
        data() {
            return {
                tabsFormData: [ //图书表单
                    // {typeItem: "表单类型", nameLabel: "输入框label", width: "大小", disabled: "是否禁用",handleClick:"操作事件",isActive:"是否开启操作事件,默认不开启"}, 
                    {typeItem: "input", nameLabel: "名字", width: "40px", disabled: false}, 
                    {typeItem: "input", nameLabel: "价格", width: "40px", disabled: false,handleClick:"priceClick",isActive:true},
                    {typeItem: "input", nameLabel: "作者", width: "40px", disabled: true,isActive:false},
                ],
            }
        },
    };
</script>
View Code
复制代码

组件formWork.vue 中代码

复制代码
<template>
    <div id="">
        <h4>这里是表单操作事件处理</h4>
        <v-form-content ref="form"  :arrForm="arrForm" @priceClick="priceClick"></v-form-content>
    </div>
</template>

<script>
    import Vue from 'vue'
    import Antd, { message,Select } from 'ant-design-vue'
    import 'ant-design-vue/dist/antd.css'
    import vFormContent from '../components/formContent'

    Vue.use(Antd);
    
    export default {
        name: "formWork",
        components:{
            vFormContent
        },
        props:{
            arrForm: {
                type: Array,
                required: true,
                default() {
                    return [
                        {handleClick:test},
                    ]
                }
            }
        },
        methods:{
            priceClick() {
                console.log("我是点击事件");
            },
        }
    }
</script>

<style scoped>

</style>
View Code
复制代码

组件formContent.vue 中代码

复制代码
<template>
    <div id="">
        <h5>这里是表单内容</h5>
        <a-form layout="inline">
            <a-form-item :label="item.nameLabel" :key="index" v-for="(item,index) in arrForm">
                <a-input placeholder="请输入" :disabled="item.disabled" @click="item.isActive?$emit(item.handleClick):''" />
            </a-form-item>
        </a-form>
    </div>
</template>

<script>
    import Vue from 'vue'
    import Antd, { message,Select } from 'ant-design-vue'
    import 'ant-design-vue/dist/antd.css'
    Vue.use(Antd);
    
    export default {
        name: "formContent",
        props:{
            arrForm: {
                type: Array,
            },
        }
    }
</script>

<style scoped>

</style>
View Code
复制代码

 

 

vue-cli 中使用父子之间传值_父组件传值子组件_封装button按钮

vue组件之间传值(01)__父组件传值子组件 props

 

posted on   大飞_dafei  阅读(537)  评论(0编辑  收藏  举报

编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示