本文最后更新于:2022-07-30T20:21:00+08:00
问题记录
目前已经记录的问题简要描述如下:
table组件切换时会有不同程度的长度变化
带输入建议的input中,输入建议显示空白
input输入建议的模糊查询
table的定位跳转
侧边栏子菜单展开后会多出1px
弹出对话框的抖动问题
解决方案
1.table组件长度变化
如果将elementUI
table作为动态组件在页面中显示,第一次显示是正常的,而后续来回切换之后再显示,table会出现不同程度的长度变化,据官方所说这好像是内部的一个小bug。
一种解决方案是在每次切换回表格的时候对数据进行重新加载,在activate生命周期的时候执行下面的方法。
1 2 3 4
| this.$nextTick(() => { this.$refs.multipleTable.doLayout(); });
|
elementUI中提供有带输入建议的input组件使用如下:
1 2 3 4 5 6 7 8 9 10
| <el-autocomplete class="inline-input" v-show="show" v-model="searchName" :fetch-suggestions="querySearch" placeholder="名称搜索" :trigger-on-focus="false" :model-append-to-body="false" @select="handleSelect" ></el-autocomplete>
|
其中实现返回输入建议的是绑定在:fetch-suggestions
里的方法,下面的问题3中会提供一种模糊查询的方式。目前遇到的问题是返回建议是空白的,原因在于显示的数据中,输入建议必须是在value
字段当中。
3.返回模糊查询的输入建议
input组件通过绑定在:fetch-suggestions
里的方法实现输入建议。通常在输入建议当中,我们会返回模糊查询之后的结果,通过以下方式来实现:
1 2 3 4 5 6 7 8 9 10 11 12 13
| querySearch(queryString, cb) { var searchData = this.data; var results = queryString ? searchData.filter(this.createFilter(queryString)) : searchData; cb(results); }, createFilter(queryString) { return (searchData) => { return (searchData.label.toLowerCase().indexOf(queryString.toLowerCase()) > -1); }; },
|
4.table的定位跳转
目前需要完成的任务是,在输入框中输入了数据,然后表格需要将对应数据行显示当前的第一列。这个功能可以通过获取所需数据行在全部数据中的index,然后通过index进行定位跳转来实现。
1 2 3 4 5 6 7 8 9 10 11
| tableScrollMove(refName,index=0){ if(!refName || !this.$refs[refName]) return let vmEl = this.$refs[refName].$el if(!vmEl) return const targetTop = vmEl.querySelectorAll('.el-table__body tr')[index].getBoundingClientRect().top; const containerTop = vmEl.querySelector('.el-table__body').getBoundingClientRect().top; const scrollParent = vmEl.querySelector('.el-table__body-wrapper'); scrollParent.scrollTop = targetTop - containerTop; },
|
其中refName表示table表格的ref值,index表示当前需要展示的数据对应的index。
目前遇到的实现情况是,在输入框中输入了对应数据的名称(声优或者动漫的名称),通过监听目前输入框中数据的变化,动态查找到该数据在全部数据中的index,然后调用上面的定位方式。
5.侧边栏子菜单展开后会多出1px
elementUI中提供侧边栏功能,侧边栏展开后子菜单可能会出现宽度多出1px的问题,解决方案如下:
1 2 3 4
| //对table设置以下样式 .el-menu{ border-right-width: 0; }
|
6.弹出对话框的抖动问题
弹出对话框的时候会导致页面抖动,这是因为出现滑块的原因,解决方案如下:
1 2 3 4 5 6 7 8
| <style scope> /* 防止打开对话框时页面的抖动 */ body{ padding-right: 0px !important; overflow: hidden; } </style> 如果按照上述的设置不会起到作用,因为"<style scope>"中将css样式设定为局部的。所以需要将"scope"去掉。
|
参考文章
- element-ui的table,切换路由后高度变小
- SegmentFault 思否
- element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)_wyhstars的博客-CSDN博客_element
input
- element-ui表格定位到某一行
- yuwenjing - 博客园 (cnblogs.com)
- element
UI
导航栏展开后子菜单宽度多出1px问题_YingDaoMonkey的博客-CSDN博客