美文网首页
Vue tab组件

Vue tab组件

作者: 我是上帝可爱多 | 来源:发表于2018-11-06 14:43 被阅读34次

    今天跟大家分享一个tab切换的组件,功能相对完善。
    话不多说,直接上代码:

    <tab-content :list="elList" :fnoptions="optionsFn">
                  <div class="" slot="0">
                         <the-all-game :list="gameAllList"></the-all-game>
                  </div>
                  <div class="" slot="1">
                         <the-collect :list="gameCollectList"></the-collect>
                 </div>
    </tab-content>
    

    slot里面是tab的内容。

    script代码:

    data () {
          elList: [
                    {
                        id: 0,
                        name: '全部游戏'
                    },
                    {
                        id: 1,
                        name: '我的最爱'
                    }
                ],
           optionsFn: [
                    {runFn:() => console.log('click tab1')},
                    {runFn:() => console.log('click tab2')}
                ],
    }
    

    以上就是tab头部要显示的内容,及点击tab后触发的回调函数。

    接下来看看组件里面如何写的:

    <template>
        <div class="container">
            <div class="header">
                <span class="title" :class="index === active? 'active' : ''" v-for="(item, index) in tabList" :key="index" @click="open(item.id)">{{item.name}}</span>
            </div>
            <div class="content">
                    <div class="wrap">
                        <slot :name="active"></slot>
                    </div>
            </div>
        </div>
    </template>
    
    <script>
    export default {
        name: 'tab-content',
        data () {
            return {
                active: 0,
                tabList: this.list,
                runfn: this.fnoptions
            };
        },
        components: {
            // ScrollComponent
        },
        props: {
            list: {
                type: Array,
                default () {
                    return [
                        {
                            id: 0,
                            name: '页面一'
                        },
                        {
                            id: 1,
                            name: '页面二'
                        }
                    ];
                }
            },
            fnoptions: {
                type: Array,
                default () {
                    return 【】;
                }
           }     
        },
        methods: {
            open (id) {
                this.active = id;
                if (this.runfn[id]) {
                    this.runfn[id].runFn();
                }
            }
        }
    };
    </script>
    

    想必看到这里大家也该明白了,就是通过组件的slot控制显影。今天就到这。。。

    相关文章

      网友评论

          本文标题:Vue tab组件

          本文链接:https://www.haomeiwen.com/subject/kwluxqtx.html