tab定时点击切换

本文介绍了一个Vue.js实现的页面动态数据加载方法,包括根据后端数据动态生成展示内容,以及点击不同索引时的高亮效果。页面数据按指定数量分页,并使用定时器进行自动切换。同时,当鼠标悬停时,定时器暂停,移开后恢复切换效果。
摘要由CSDN通过智能技术生成

方法:

1 动态生成数据 先要知道当前页面需要几条数据,根据后端返回数据进行截取

2 当点击不同的index时显示的高亮效果

3 定时器设置

html部分

<div class="duty-view">
            <block-title><lang>排班安排</lang></block-title>
            <div v-if="!isEmpty"  @mouseenter="_onMouseEnter" @mouseleave="_onMouseLeave" class="sip-screen-part part">
                <div class="duty-item inline" v-for="(item,index) in curShowData" :key="index">
                    <div class="duty-bg inline">
                        <img src="./img/city.svg" alt="">
                    </div>
                    <div class="duty-text inline">
                        <div class="company">{{item.origin}}</div>
                        <div class="person">值班人:{{item.person}}</div>
                    </div>
                </div>
            </div>
            <div class="tab_change">
                <span
                v-for="(tab,index) in cupRankData"
                :key="index"
                class="duty_tab-item inline"
                :class="{ active: curActiveTab === index+1 }"
                @click="clickTab(index+1)"
                >
            </span>
            </div>
            
            <blank-mask v-if="isEmpty"><lang>暂无数据</lang></blank-mask>
        </div>

script部分

/**定义每页指定几条数据

const PAGE_NUM = 6;

/**定义定时器几秒触发

const TOGGLE_INTERVAL = 5 * 1000;

/**data里面定义

data() {

        return {

                 isEmpty=false;

                 isHover: false,
                  curActiveTab: 1,

/**这个动态根据后端数据生成几个span按钮

                   pageTotal:[],

/**模拟后端数据

                 rankData:[
                {origin: '综合单位1',person: 'azhu'},
                {origin: '综合单位2',person: 'yi1'},
                {origin: '综合单位3',person: 'yi2'},
                {origin: '综合单位4',person: 'yi3'},
                {origin: '综合单位5',person: 'yi4'},
                {origin: '综合单位6',person: 'yi5'},
                {origin: '综合单位7',person: 'yi6'},
                {origin: '综合单位8',person: 'yi7'},
                {origin: '综合单位9',person: 'yi8'},
                {origin: '综合单位10',person: 'yi9'},
                {origin: '综合单位11',person: 'yi10'},
                {origin: '综合单位12',person: 'yi11'},
                {origin: '综合单位13',person: 'yi12'},
                {origin: '综合单位14',person: 'yi12'},
                {origin: '综合单位15',person: 'yi12'},
                {origin: '综合单位16',person: 'yi12'},
                ]

        }

}

},

computed:{

        /**动态生成下面span效果

         cupRankData() {
            this.pageTotal=Math.ceil(this.rankData.length / PAGE_NUM)
            return this.pageTotal
        },

        /**六个数据的截取
        curShowData() {       
            let start = (this.curActiveTab - 1) * PAGE_NUM;
            return this.rankData.slice(start, start + PAGE_NUM);
        },

mounted(){

        /**定时器
        this.timer = setInterval(() => this._togglePage(), TOGGLE_INTERVAL);
    },

methods:{

/**点击切换数据

         clickTab(key) {
            if (this.curActiveTab === key) {
                return;
            }
            this.curActiveTab = key;
        },

_onMouseEnter() {
            this.isHover = true;
        },
        _onMouseLeave() {
            this.isHover = false;
        },

// 如果移动到当即的页面的话,就让他不显示,如果移开的话,就显示滑动效果
        _togglePage() {
            if (this.isHover) {
                return;
            }
            if(this.curActiveTab < 3){
                this.curActiveTab = this.curActiveTab + 1;
            }else{
                this.curActiveTab = 1;
            }
        },
        // 将数据改变成第一页的数据,然后第二页数据从第一页的开头开始,每次截取几个,开始默认

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值