获取搜索组件中某个搜索的值
项目中有一个有许多select组成的组件,其中需要根据某个select的值展示表格不同内容,所以需要获得组件中这个select的值,踩了很多坑!!!
//组件
<SearchHeader
v-model="form"
ref="search"
:limit.sync="limit"
:key-list="keyList"
credit-type="GROUP_CREDIT"
@keyup.enter.native="handleSearch"
@search="handleSearch"
/>
踩坑
async handleSearch(flag){
//获取数据业务代码
.......
var param =document.getElementById("pid");
var currencyshow = param.currencyshow;
const { data } = await queryGroupList(query);
//筛选表格
```javascript
....//获取表格表头columns1
if(val === "1"){
console.log('jjjjj---:',val);
this.columnTable=columns1.filter(col=>col.isshow ==="one" || col.isshow ==="show");
}else if(val === "2"){
this.columnTable=columns1.filter(col=>col.isshow ==="two" || col.isshow==="show");
}else this.columnTable =columns1;
....
}
这种方法虽然有效,但是确实一次性的,初次页面无法渲然,只有点击查询按钮之后才能渲染页面,但是当改变select值时页面无法生效(不清楚原因),并且使用getElementById只能在await获取数据接口前,否则无法生效
解决方法
尽量减少跨页面使用getElementById函数,使用$ref效果十分不错
const params = this.$refs.search.form;
var val= this.$refs.search.form.currencyshow;
即将所有搜素框的值绑定在form上(一起打包发送给后端)