element-ui+vue开发中的小知识

目录

el-table

el-checkbox

el-date-picker

el-select 


el-table

// 表格数据回显
this.pushServiceData.forEach((element) => {
  if (element.id === '581467208874485176') {
     (this.$refs.multipleTable as any).toggleRowSelection(element)
  }
})

el-table横向滚动条鼠标悬浮时样式修改 (高度改变,颜色改变)

*:hover::-webkit-scrollbar {
  height: 12px !important;
}
*::-webkit-scrollbar-thumb:hover {
  background-color: #969696 !important;
}

el-table对某列渲染成按钮,比如:

{
   label: '执行备注',
   minWidth: 100,
   align: 'center',
   'header-align': 'center',
   render: (h, { record }) => { // 渲染成按钮形式
      return h(
        'el-button',
           {
             props: { type: 'text' },
             on: {
                 click: () => that.beizhu(record)
              }
            },
         '查看'
       );
     }
}

el-checkbox

groupChange() {
    if (this.checked.length > 1) {
      this.checked.shift();
    }
  }
<el-checkbox-group v-model="checked" @change="groupChange">
</el-checkbox-group>

el-date-picker

// 日期多选后点击确定排序
change(val) {
    const newArr = val.sort(sortF)
    console.log(newArr)
}
function sortF(a, b) {
  return new Date(a).getTime() - new Date(b).getTime();
}

el-select 

a.问题描述:主项目是使用的(react +antd) ,子项目使用的技术栈是(vue+element),子项目的下拉框出现页面滚动但是对应的下拉框的位置固定,影响用户的使用和观感

想到了两个解决方案个人倾向于第二个

方案一: 'popper-append-to-body': false

此方案在我使用的时候感觉到的缺点:因为是配置化的页面,下拉框很可能配置在屏幕的最右测,如果下拉列表内容过长,会导致超过屏幕看不到内容,影响用户的观感。

方案二:在滚动屏幕时将下拉框给隐藏

// app.vue
import fakeClickOutSide from '@mixins/fackClickOutSide.js';
mixins: [fakeClickOutSide],
// 在mixins文件下新建文件fakeClickOutSide.js
let lock = true;
let el = null;
const MousedownEvent = new Event('mousedown', { bubbles: true });
const MouseupEvent = new Event('mouseup', { bubbles: true });
const fakeClickOutSide = () => {
  document.dispatchEvent(MousedownEvent);
  document.dispatchEvent(MouseupEvent);
  lock = true; // console.log('dispatchEvent');
};
const mousedownHandle = (e) => {
  const classList = e.target.classList;
  if (
    classList.contains('el-select__caret') ||
    classList.contains('el-input__inner')
  ) {
    lock = false;
    return;
  }
  if (lock) return;
  fakeClickOutSide();
};
const mousewheelHandle = (e) => {
  if (
    lock ||
    e.target.classList.contains('el-select-dropdown__item') ||
    e.target.parentNode.classList.contains('el-select-dropdown__item')
  )
    return;
  fakeClickOutSide();
};
const eventListener = (type) => {
  el[type + 'EventListener']('mousedown', mousedownHandle);
  window[type + 'EventListener']('mousewheel', mousewheelHandle);
  window[type + 'EventListener']('DOMMouseScroll', mousewheelHandle); // fireFox 3.5+
};
export default {
  mounted() {
    el = this.$root.$el;
    el.addFakeClickOutSideEventCount = el.addFakeClickOutSideEventCount || 0;
    !el.addFakeClickOutSideEventCount &&
      this.$nextTick(() => {
        eventListener('add');
      });
    el.addFakeClickOutSideEventCount += 1;
  },
  destroyed() {
    eventListener('remove');
    el.addFakeClickOutSideEventCount -= 1;
  }
};

解决npm包提供的错误index.d.ts文件 

tsconfig.json文件的compilerOptions中添加skipLibCheck: true 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值