如何在antD vue表格插槽中传递参数?

ant框架,vue语法,table表格问题
具体情况:
我要在表格中渲染一列带有 tag 颜色渲染得,于是我是用了插槽,因为后端给我反的只是一个状态码,code值,所以我需要对这个值进行翻译,我定义了一个dictList,将所有得状态以及翻译放在一起了,方便维护。我在写表格插槽时候需要将翻译得list传递到插槽内部,跪求各位大佬如何传递这个list
目前只有两列,如果后续出现多列,那我需要写更多得插槽
两个插槽是大体一样得,只有翻译需要翻译得list不一样,如何在定义插槽时候将list传递进去

data(){
    return {
      listA: [{code: 0,value: '你好'},{code: 1,value: '不好'},],
      listB: [{code: 'AA',value: '描述1'},{code: 'BB',value: '描述2'},],
    }
},
// 表格渲染
computed: {
    columns() {
      return [
        {
          title: 'ID',
          dataIndex: 'id',
        },
        {
          title: '等级',
          dataIndex: 'severity',
          // listA: listA 为错误写法,我要的就是类似得效果
          // 我只有在此处才知道要传递哪个list给插槽
          scopedSlots: { customRender: 'tagDictTrans',listA: listA },
        },
        {
          title: '处置状态',
          dataIndex: 'status',
          scopedSlots: { customRender: 'tagDictTrans1',listB: listB },
        },
      ]
    },
  },
// 插槽渲染
<template slot="tagDictTrans" slot-scope="text" :listA="listA">
  // 在此处使用listA  packagesSeverity是个变量并不知道是哪个list,所以需要传值进来
  <a-tag :color="dictList.translateDict(packagesSeverity, text).color">{{ dictList.translateDict(packagesSeverity, text).text }}</a-tag>
</template>
<template slot="tagDictTrans1" slot-scope="text">
  <a-tag :color="dictList.translateDict(packagesStatus, text).color">{{ dictList.translateDict(packagesStatus, text).text }}</a-tag>
</template>
const packagesStatus = [
  { value: '0', text: '未修复', color: 'orange' },
  { value: '1', text: '无需修复', color: 'blue' },
  { value: '2', text: '已修复', color: 'green' },
]
const packagesSeverity = [
  { value: '0', text: '低', color: 'blue' },
  { value: '1', text: '中', color: 'green' },
  { value: '2', text: '高', color: 'orange' },
  { value: '3', text: '严重', color: 'pink' },
]
]
// 字典翻译
const translateDict = (list, e) => {
  var obj = {}
  list.map(i => {
    if (i.value == e) {
      obj = i
    }
  })
  return obj
}
export default {
  packagesStatus,
  packagesSeverity,
  translateDict,
}
回复
阅读 842
1 个回答

直接写customRender呢?

建议你先自己封装一个组件,接收两个参数,一个是Dict,也就是对应关系。另一个是当前值

当你写好这个组件后,比如它叫TagRenderer

{
    title: '等级',
    dataIndex: 'severity',
    customRender: (value)=> <TagRenderer :dict={packagesSeverity} :value={value} />
},
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏