本篇文章给大家分享的是有关利用vue如何实现一个动态表格提交参数的功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
动态控件代码如下
<el-form
:model="formData"
>
<div v-if="tableshow">
<div v-for="(item,i) in control" :key="i" >
<el-form-item
v-if="item.type=='input'"
:key="item.name"
:prop="item.name"
label-width="100px">
<label slot="label">{{ item.cnname }}:</label>
<el-input v-model="item.value" size="mini" />
</el-form-item>
<el-form-item
v-if="item.type=='time'"
:key="item.name"
:prop="item.name"
label-width="100px">
<label slot="label">{{ item.cnname }}:</label>
<el-date-picker
v-model="item.value"
value-format="yyyy-MM-dd HH:mm:ss"
type="date"
placeholder="选择日期"/>
</el-form-item>
</div>
<div >
<el-form-item prop="name" >
<el-button class="filter-item" type="primary" icon="el-icon-search" size="mini" @click="cmdsearch">
{{ $t('table.search') }}
</el-button>
</el-form-item>
</div>
</div>
</el-form>
data格式如下
control: [{
name: 'input1',
cnname: '输入框1',
type: 'input',
value: '这里'
}, {
name: 'time1',
cnname: '时间范围',
type: 'time',
value: null
}]
还要监听所有控件变化
computed: {
// 监听所有控件变化
formData: function() {
var formData = {}
this.control.forEach((item) => {
formData[item.name] = item.value
})
return formData
}
}
动态表格如下
<el-table
v-if="tableshow"
id="exportTab"
ref="multipleTable"
:data="tables"
border="true"
tooltip-effect="dark"
@selection-change="selectArInfo">
<el-table-column fixed="left" label="序号" width="62px" type="index"/>
<template v-for="(col) in tableData">
<el-table-column
:show-overflow-tooltip="true"
:formatter="fmtLength"
:prop="col.dataItem"
:label="col.dataName"
:key="col.dataItem"
resizable="true"
width="120px"/>
</template>
</el-table>
需要两个数组,一个保存表格列名,一个保存表格数据
tables: [],
tableData: [dataItem: xxx,
dataName: xxx], //保存表格列名
补充知识:vue table表格的使用(动态数据展示)
第一种方式
<el-table :data="tableDataalllist" border @sort-change="totalusercount">
<el-table-column :label="head" :prop="head" v-for="(head, index) in header" :key="head" :sortable="定义自定义排序项">
<template slot-scope="scope">
{{tableDataalllist[scope.$index][index]}} // 当前行数据 接收两个参数scope.$index; scope.row
<template>
<el-table-column>
<el-table>
<script>
export default{
data(){
return{
// 数据结构
tableDataalllist:[{
1,'张三','23'
},{
2,'李四','15'
},{
3,'王五','18'
}],
header:['id','name','age']
}
},
methods:{
// 接受一个obj参数
totalusercount(obj){
console.log(obj.prop) // 排序规则
console.log(obj.order) // 排序方式
}
}
}
</script>
id | name | age |
---|---|---|
1 | 张三 | 23 |
2 | 李四 | 15 |
3 | 王五 | 18 |
第二种方式(动态进行列的添加)
<el-table :data="gameareatable" v-loading="cardBuyConsumeDataLoading" v-if="gameareatable.length> 0">
<el-table-column align="center" v-for="(item,index) in activePlayerDataPropLabelArray" :prop="item.prop" :label="item.label"
:key="item.prop">
<template slot-scope="scope">
{{scope.row[item.prop]?scope.row[item.prop]:'暂无数据'}}
</template>
</el-table-column>
</el-table>
export default {
data(){
return{
// 数据结构 activePlayerDataPropLabelArray为label标签显示label表示当前列th的显示的值,prop表示当前'日期'列下显示date数据,'斗地主'列下显示prop为12的数据,'麻将'列下显示prop为15的数据,
activePlayerDataPropLabelArray:[{
label:'日期',
prop:'date'
},{
label:"斗地主",
prop:"12"
},{
label:'麻将',
prop:'15'
}],
gameareatable:[{
date:"2018-09-10",
12:'老k',
15:'一万'
},{
date:"2018-08-01",
12:'炸弹',
15:'一条'
},{
date:"2018-08-02",
12:'对子',
15:'五筒'
}]
}
}
}
日期 | 斗地主 | 麻将 |
---|---|---|
2018-09-10 | 老k | 一万 |
2018-08-01 | 炸弹 | 一条 |
2018-08-02 | 对子 | 一万 |
以上就是利用vue如何实现一个动态表格提交参数的功能,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。