VUE Element table中遇到的问题
特此声明:本人Vue小白,初学者,以下都是使用过程中遇到的问题,若有理解片面或者错误,欢迎留言指正!(PS:私信也行)1,关于表格分页total的赋值total一定要是数值类型,如果数据库返回的是字符串,使用Number(val)进行转换。2,推荐某列赋值,通过scope.row进行赋值;而不是使用默认prop进行默认赋值,假设某列值需要转换。【PS: 不要在取数返回后,通过循环的...
特此声明:本人Vue小白,初学者,以下都是使用过程中遇到的问题,若有理解片面或者错误,欢迎留言指正!(PS:私信也行)
1,关于表格分页total的赋值
total一定要是数值类型,如果数据库返回的是字符串,使用Number(val)进行转换。
2,推荐某列赋值,通过scope.row进行赋值;而不是使用默认prop进行默认赋值,假设某列值需要转换。
【PS: 不要在取数返回后,通过循环的方式修改数据结构;浪费效率;如果修改用列表行的值(scope.row)对form表单赋值,数据格式下发的时候,你还需要再转回来。数据直接拿过来使用就行,如果不能直接使用,就通过以下的代码进行转换。】
使用场景: 选择图片大小,数据库存的值为width:200,height:150,列表显示格式为200*150
<el-table-column prop="width" label="Size">
<template slot-scope='scope'>
<p>{{scope.row.width+"*"+scope.row.height}}</p>
</template>
</el-table-column>
扩展,也可以写成方法进行调用
<el-table-column prop="width" label="Size">
<template slot-scope='scope'>
<p>{{getSize(scope.row.width, scope.row.height)}}</p>
</template>
</el-table-column>
getSize为methods里面的方法
getSize(width, height) {
return width + "*" + height;
}
PS:据小白自己目前的理解,Element并未提供获取行的索引,scope.$index可以取到。小白也不是很理解Element这块的设计,scope.row都给了,为什么不能在里面加上行的索引。如若有看到,还请留言答复,多谢!
3,表格某列显示状态 status,赋值为number类型,赋值失败。
解决办法:
第一种方法: :active-value=1 :inactive-value=0 直接写上数字;使用v-bind时,也可以这么写:active-value="1" :inactive-value="0"。
第二种方法:采用迂回战略,先给开关附上变量,变量的值是number类型,就可以正常选中了;
<template>
<el-table :data="myData" style="width: 100%" min-height="250" border>
<el-table-column prop="state" label="状态">
<template slot-scope="scope" >
<el-switch v-model='scope.row.state' :active-value='onVal' :inactive-value='offVal' >
</el-switch>
</template>
</el-table-column>
</el-table>
</template>
<script>
export default {
data() {
return {
onVal: 1,
offVal: 0,
myData: [{ state: 1 }, { state: 0 }, { state: 1 }, { state: 1 }]
}
}
}
</script>
4. 可编辑表格(或者动态显示表格里面某一行时), 这个时候你可能要操作显示隐藏,可能要获取某个文本框的值;
解决思路: 操作scope.row; 如果一开始加载需要隐藏就给scope设置一个不存在的属性(scope.row.noExist),如果需要显示就通过$set方法赋值,取值的时候就是你要拿到的值。【PS: 只是一种思路,可以解决多种问题,树,下拉等循环操作数据需要特殊处理的】
<el-table-column prop="jobName" :label="postsLabelObj.jobName">
<template slot-scope='scope'>
<span v-if='!scope.row.editJobName'>
{{scope.row.jobName}} // 默认加载的值
</span>
<span v-if='scope.row.editJobName' >
<el-input v-model='scope.row.editJobName' ></el-input>// 点击尾列后显示的文本框
</span>
</template>
</el-table-column>
效果如图:
点击修改的method:
// 修改职位名称
modifyPostsFun(records) {// 此处传入的值就是scope.row
this.$set(records, 'editJobName', records.jobName)
}
出现的效果,如图:
看到这里: 感觉您是一个耐心的程序员! 其实问题有很多种,也许跟你遇到不一样,但只要足够的细心+耐心,一定可以解决的。套路都一样。(如果您有遇到其它的问题,请留言,我会定期更新到文章后面)
更多推荐
所有评论(0)