特此声明:本人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)

}

出现的效果,如图:

看到这里: 感觉您是一个耐心的程序员! 其实问题有很多种,也许跟你遇到不一样,但只要足够的细心+耐心,一定可以解决的。套路都一样。(如果您有遇到其它的问题,请留言,我会定期更新到文章后面)

 

 

Logo

前往低代码交流专区

更多推荐