vue模板中elementui的应用el-table-column prop如何调用json对象,将数字转成中文

本文介绍如何在项目中将后台返回的数字状态通过el-table和formatter函数转换为友好的中文说明,以便用户理解。展示了如何在表格列中使用formatter方法实现对象属性的格式化显示。

项目中需要在列表中增加一列显示状态说明,如果直接给出数字,用户看不懂,需要把数字状态转成中文说明才能看得懂。

后台返回的原始数据格式如下

data:[
    {
        "id":156,
        "order_sn": "2021042934567231",
        "record":{"id":13841,"status":10},
        "user":[{"id":111,"name":"zhangsan"},{"id":112,"name":"lisi"}],
        "create_time":"2021-04-29 16:53:50",
    }
]

正常template slot-scope="scope"调用数组的效果如下:

<el-table class="ai-table" :data="tableData" border v-loading="loading" element-loading-text="拼命加载中..." style="width: 100%" @selection-change="handleSelectionChange">

    <el-table-column label="id" prop="id" width="70" align="center" sortable></el-table-column>
    <el-table-column prop="order_key" width="140" label="订单号" align="center"></el-table-column>

    <el-table-column prop="record.status" label="状态" width="80" align="center"></el-table-column>

    <el-table-column prop="user" label="用户" width="80" align="center">
       <template slot-scope="scope">
          {{!scope.row.name?'匿名':scope.row.name}}
        </template>
    </el-table-column>

    <el-table-column prop="create_time" label="时间" align="center"></el-table-column>

</el-table>

效果如下

ID订单号状态用户时间
156202104293456723110zhangsan2021-04-29 16:53:50
     

 

列表中能调用到record中的status,显示的是数字,不友好。用template slot-scope="scope"是调用不到对象的,只能调用到数组。那么模板中要如何调用对象并做一个格式化输出呢,请往下看,要用到formatter

第一步,使用el-table-column prop调用对象

<el-table class="ai-table" :data="tableData" border v-loading="loading" element-loading-text="拼命加载中..." style="width: 100%" @selection-change="handleSelectionChange">

    <el-table-column prop="record.status" label="状态" width="80" align="center" :formatter="formatStatus"></el-table-column>

</el-table>

第二步,methods中添加formatStatus

methods: {
    //合同状态格式化
    formatStatus: function (row, column, cellValue) {
      var statusTxt = ''; 
      statusTxt = cellValue == null?"无数据":cellValue === 10?"待发货":"状态错误";
      return statusTxt;
    },

}

这样就OK了,在列表页中显示效果如下

ID订单号状态用户时间
1562021042934567231待发货zhangsan2021-04-29 16:53:50
     

 

### Element UI `el-table-column` Prop 属性数据转换方法Element UI中,对于`el-table-column`组件的`prop`属性进行数据转换可以通过多种方式实现。一种常见的方式是利用`:formatter`函数来定义显示逻辑。 #### 使用Formatter函数 当需要对列中的数据显示特定格式时,可以使用`formatter`选项。此功能允许开发者自定义每一行单元格的内容呈现形式。下面是一个具体的例子: ```html <el-table :data="tableData"> <el-table-column prop="status" label="状态" :formatter="formatStatus"></el-table-column> </el-table> <script> export default { methods: { formatStatus(row, column, cellValue) { switch(cellValue){ case 'F': return "否"; case 'T': return "是"; case 'S': return "用户页面已展示"; default: return cellValue; } } }, }; </script> ``` 上述代码展示了如何基于不同的`cellValue`返回相应的中文描述[^5]。 #### 利用作用域插槽(Scoped Slot) 除了内置的`formatter`外,还可以借助于模板内的作用域插槽来进行更复杂的操作。这种方式提供了更大的灵活性,使得可以在不局限于简单的文本替换的情况下完成更多样化的DOM结构构建。 ```html <el-table :data="tableData"> <el-table-column label="创建时间"> <template slot-scope="scope"> <span v-if="scope.row.createTime === 0">正常</span> <span v-else>停用</span> </template> </el-table-column> </el-table> ``` 这段代码片段说明了怎样根据条件判断并动态更改表格内某字段的表现形式[^4]。 #### 动态Prop绑定与表达式计算 如果希望进一步增强交互性和响应能力,也可以考虑采用Vue.js特有的语法特性——即通过双大括号或v-bind指令将JavaScript表达式的求值结果作为属性传递给子组件。这同样适用于设置`el-table-column`的`prop`参数。 ```html <!-- 假设有一个变量yearAndMonth --> <el-table :data="allList"> <el-table-column :label="'月份'" :prop="`${yearAndMonth}`"/> </el-table> ``` 此处的例子表明了如何把两个字符串连接起来形成新的键名用于访问对象属性[^3]。 综上所述,在Element UI框架下有多种形式可用来处理来自服务器端原始JSON对象里的简单数值型或其他类型的数据映射到前端界面上更加直观易懂的文字表述或者其他视觉效果之上。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值