Vue中的v-slot如何使用

Posted 熬夜的小青年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue中的v-slot如何使用相关的知识,希望对你有一定的参考价值。

今天看了看Vue的文档,发现了v-slot这个指令,生怕掉队的我赶紧补习了一下

直接上代码!!!


//父组件
<template>
    <!--在此处添加渲染的内容-->
    <div>
        <el-button type="text" @click="dialogFormVisible = true">打开嵌套表单的 Dialog</el-button>

        <base-prop :dialogFormVisible="dialogFormVisible" :title="title" @backBtn="back" @submitBtn="submitBtn">
            //这种是简写方式,也可以写成v-slot:contents,还可以使用作用域
            <template #contents>
                <el-form :model="form">
                    <el-form-item label="活动名称" :label-width="formLabelWidth">
                        <el-input v-model="form.name" autocomplete="off"></el-input>
                    </el-form-item>
                    <el-form-item label="活动区域" :label-width="formLabelWidth">
                        <el-select v-model="form.region" placeholder="请选择活动区域">
                            <el-option label="区域一" value="shanghai"></el-option>
                            <el-option label="区域二" value="beijing"></el-option>
                        </el-select>
                    </el-form-item>
                </el-form>
            </template>
        </base-prop>
    </div>
</template>

<script type="text/ecmascript-6">
    import BaseProp from './BaseProp.vue'
    //将渲染的内容导出
    export default
        props: ,
        data()
            return 
                dialogFormVisible: false,
                title: '测试',
                form: 
                    name: '',
                    region: ''
                ,
                formLabelWidth: '120px'
            
        ,
        methods: 
            submitBtn(obj)
                console.log(this.form);
                console.log(obj);
            ,
            back(b)
                this.dialogFormVisible = b;
            
        ,
        components: BaseProp,
        computed: ,
        watch: ,
        created()
        ,
        mounted()
        ,

    
</script>

<style scoped>
    /**渲染内容的样式**/
</style>
//子组件
<template>
    <!--在此处添加渲染的内容-->
    <div>
        <el-dialog :title="title" :visible.sync="visible">
            <slot name="contents"></slot>
            <div slot="footer" class="dialog-footer">
                <el-button @click="back">取 消</el-button>
                <el-button type="primary" @click="submit">确 定</el-button>
            </div>
        </el-dialog>
    </div>
</template>

<script type="text/ecmascript-6">
    //将渲染的内容导出
    export default
        props: 
            title: //标题
                type: String,
                default: () => 
                    return '弹出层'
                
            ,
            dialogFormVisible: 
                type: Boolean,
                required: true
            

        ,
        data()
            return 
                visible: false
            
        ,
        methods: 
            back()
                this.visible = false;
            ,
            submit()
                this.$emit('submitBtn', true);
            
        ,
        components: ,
        computed: 
        ,
        watch: 
            'dialogFormVisible': function (newVal, oldVal) 
                this.visible = newVal;
            ,
            'visible': function (newVal, oldVal) 
                this.$emit('backBtn', newVal);
            
        ,
        created()
        ,
        mounted()
        ,

    
</script>

<style scoped>
    /**渲染内容的样式**/
</style>

 

以上是关于Vue中的v-slot如何使用的主要内容,如果未能解决你的问题,请参考以下文章

Vue中的v-slot如何使用

如何在 Table Bootstrap Vue 中为行禁用 v-slot

vue2升级vue3:Vue2/3插槽——vue3的jsx组件插槽slot怎么处理

带有函数调用的 vue.js 单元测试 v-slot

Vue 作用域插槽slot slot-scope v-slot

Vue 作用域插槽slot slot-scope v-slot