表格同步滚动

1.利用ref获取dom元素会快

2.$forceUpdate强制刷新

<div class="mxb-left-con js-mxb-left-con" ref="jsDfMxbLeftCon">
    <table>
        <tbody>
        <tr v-for="(item,index) in dataListDf" @mouseover="mxbtdmouseover(item)"
            @mouseout="mxbtdmouseout(item)" :class="{'mxb-hover': item.isMxbHover}">
            <td class="jbxxb-td-left" v-text="item.name" :title="item.name"></td>
            <td class="jbxxb-td-left" v-text="item.sqbm" :title="item.sqbm"></td>
            <td class="jbxxb-td-left" v-text="item.hzj" :title="item.hzj"></td>
        </tr>
        </tbody>
    </table>
</div>
// 循环添加isMxbHover字段
_this.dataList.forEach(function (item) {
    item.isMxbHover = false;
});

在vue框架中,如果data中有一个变量:age,修改他,页面会自动更新。

但如果data中的变量为数组或对象,我们直接去给某个对象或数组添加属性,页面是识别不到的

$forceUpdate具有强制刷新的作用

// 鼠标划过时添加class
mxbtdmouseover: function (item) {
    item.isMxbHover = true;
    this.$forceUpdate();
},
// 鼠标移除时去除class
mxbtdmouseout: function (item) {
    item.isMxbHover = false;
    this.$forceUpdate();
},

3.同步滚动

<div class="mxb-left"
     @mouseenter="mouseenterHandler('left')"
     @mouseleave="mouseleaveHandler('left')">
</div>

<div class="mxb-right"
     @mouseenter="mouseenterHandler('right')"
     @mouseleave="mouseleaveHandler('right')">
</div>
// 鼠标划入事件
mouseenterHandler: function (name) {
    this[ name + 'ScrollFlag'] = true;
},
// 鼠标划出事件
mouseleaveHandler: function (name) {
    this[ name + 'ScrollFlag'] = false;
},
// 同步滚动
zyScrollEvent: function () {
    // 获取左侧表格内容部分
    var mxbLeft = this.$refs.jsMxbLeftCon;
    // 获取右侧表格内容部分
    var mxbRight = this.$refs.jsMxbRightCon;
    // 左侧表格和右侧表格同步滚动
    mxbLeft.removeEventListener('scroll', this.scrollLeftHandler);
    // 左侧表格和右侧表格同步滚动
    mxbRight.removeEventListener('scroll', this.scrollRightHandler);
    // 左侧表格和右侧表格同步滚动
    mxbLeft.addEventListener('scroll', this.scrollLeftHandler);
    // 左侧表格和右侧表格同步滚动
    mxbRight.addEventListener('scroll', this.scrollRightHandler);
},
// 滚动左边的处理函数
scrollLeftHandler: function () {
    // 如果是左边滚动的,那么需要设置右边区域的滚动条
    if (this.leftScrollFlag){
        // 获取右侧表格内容部分
        this.$refs.jsMxbRightCon.scrollTop = this.$refs.jsMxbLeftCon.scrollTop;
    }
},
// 滚动右边的处理函数
scrollRightHandler: function () {
    // 如果是左边滚动的,那么需要设置右边区域的滚动条
    if (this.rightScrollFlag){
        // 获取右侧表格内容部分
        this.$refs.jsMxbLeftCon.scrollTop = this.$refs.jsMxbRightCon.scrollTop;
        // 获取右侧表格头部
        this.$refs.jsMxbRightHeaderCon.scrollLeft = this.$refs.jsMxbRightCon.scrollLeft;
        // 获取右侧表格底部
        this.$refs.jsMxbRightFooterCon.scrollLeft = this.$refs.jsMxbRightCon.scrollLeft;
    }
},
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值