column: [
{label: "动态表头", prop: "测试"}
在后台返回一串类似于页面的写法的返回值。
然后重点来了,拿到返回值后,使用前端框架的eval()函数处理一下。eval函数释义:
eval()
eval()
的参数是一个字符串。如果字符串表示的是表达式,eval()
会对表达式进行求值。如果参数表示一个或多个 JavaScript 语句,那么eval()
就会执行这些语句。
使用this.option.column.push方法,将返回值或自定义的column列拼装到我们的目标option中。
到这里,label的动态拼装已经完成,页面上点击查询执行handleQuery方法此时已经可以看到列名的动态变化。后面只需跟上常规crud获取内容的方法:
这里我写的getlist方法和onLoad方法中一致 ,毕竟上面只是多一个获取列名字段的方法。
当我做到这里,我认为动态展示列名,内容的方法已经被我攻克后,自信满满的去调试,结果很意外,的确每次都可以展示我想要的列名,但是每次push进去的column列会一直堆积在option,造成了页面上列名堆列名,内容展示混乱,大概是下面的效果:
这让我很苦恼, 虽然我直接就看出来这是this.option.column.push所导致的,我应该每次push之前都清空下column,再push新的内容,就像Java中循环list时若想每次只拿到想要的结果,就要new一个对象来当盘子,那么在这avue中,什么方式能实现呢,离谱的是this.option.column有push,但是没发现有关于delete或者remove的方法,也可能是我前端菜鸡不知道,反正因为研究删除函数浪费了很久,最后我抱着试试看的想法,既然column是定义在option中的一个数组,那么直接每次获取表头前,我将this.option.column整个赋空,然后操作不就行了。
果然,加入this.option.column = [];后,我实现了每次查询都正取展示列名与内容的操作
4.总结一下流程就是:
发送获取动态列名数据的请求,后端拼装成column列表的写法
前端给调用this.option.column.push之前,先给整个column赋空,然后push获取的值
发送获取prop内容的请求,像以往一样给prop赋值即可
总结后发现很简单,很普通,但是为此花费的时间真不少,而且百度和必应上面能搜到的关于此类的文章我真的没见过,可能这是个基础操作没什么好写的,工作中解决的问题记录一下,对我来说还是很重要的。
对于avue-crud动态表头有好的实现方法,欢迎大佬们的指点,前端二把刀非常感谢。
昨天还在写jsp,今天的项目功能要用avue-crud框架实现动态的展示column,包括column中的label与prop,prop还好说,框架的常规操作,但是这个label的动态改变真是头大的要命,翻边网上的资料,从官网到手册,从百度到必应,无一例外都是介绍crud参数的内容,最终还是边摸索边思考实现了,下面把探索过程全面奉上。1.其实我这里做的是个统计功能,label列就2列,比较简单,复杂表头的实现网上有很多,可以去借鉴,这里直说label的动态展示。2.废话不多说,直接先上js实现方法:
表头的餐数是动态设置的,主要用到了this.option.colum配置表头
this.option.column[2].children = childrenR;
this.option.column[3].children = childrenS;
问题:搜索后不回显
change方法设置搜索的默认值
label: "所属机构",
prop: "organizationId",
type: "tree",
search: false,
hide: true
#### avue dynamic动态子表单启用插槽slot功能的正确方式
#### 关于avue dynamic动态子表单
> - 配置dynamic的children字段即可
> - 内部组件为crud组件,大部分属性参考Crud文档
> - 默认的type为curd,还可以配置成form
> - 内部组件为form组件,大部分属性参考Form文档
> - crud的行编辑功能为默认开启,可以设置cell为false关闭行编辑
### 官方示例
```html
<avue-crud ref="crud" :data="dataList" :option="option" :summary-method="getSummaries"
:show-column.sync="showColumn" :table-loading="loading" :page.sync="page
在 Avue-Crud 中,设置表头高度可以通过设置表头的样式来实现。以下是一种设置表头高度的方法:
1. 找到你的 Avue-Crud 组件所在的文件,通常是一个.vue文件。
2. 在<template>标签中,找到表格的头部部分,通常是使用<el-table-column>标签来定义列的。在该标签中,添加一个属性名为 header-style 的属性,用来设置表头的样式。
3. 在 header-style 的属性值中,使用 CSS 的 height 属性来设置表头的高度。例如,你可以设置为 "height: 60px;" 来将表头的高度设置为60像素。
具体代码示例如下:
```html
<template>
<avue-crud>
<avue-table>
<el-table>
<el-table-column prop="name" label="姓名" :header-style="{ height: '60px' }"></el-table-column>
<el-table-column prop="age" label="年龄" :header-style="{ height: '60px' }"></el-table-column>
<!-- 其他表头列 -->
</el-table>
</avue-table>
</avue-crud>
</template>
在上述代码中,我们在每个<el-table-column>标签的 header-style 属性中设置了表头的高度为60像素。
你可以根据实际需要调整表头的高度值。记得在使用CSS样式时,要注意选择器的权重,以确保样式生效。
希望能帮到你!如果还有其他问题,请继续提问。