注意点:定义的columns一定要写在data中,否则在加载过程中由于渲染顺序会导致其中的渲染函数无法识别

渲染方法1:

指定渲染函数:

const columns = [
      {
        title: '排名',
        dataIndex: 'key',
        customRender: renderContent // 渲染函数的规则
      }, {
        title: '搜索关键词',
        dataIndex: 'keyword',
        customRender: (text, row, index) => {
            if (index < 4) { // 前4行数据以a标签的形式被渲染
              return <a href="javascript:;">{text}</a>
            }
            return { // 否则以独占4列的文本形式被渲染
              children: text,
              attrs: {
                colSpan: 4
              }
            }
        }
      }
]
const renderContent = (value, row, index) => {
  const obj = {
    children: value,
    attrs: {}
  }
  return obj
}

渲染方法2:

直接调用对应插槽模板:

<a-table :columns="columns" :dataSource="data" :pagination='pagination'>
    <template slot="operation">
        <a-select placeholder="选择操作" style="width: 100%" @change="listHandleChange">
          <a-select-option value="1">项目进度</a-select-option>
          <a-select-option value="2">质量管控</a-select-option>
          <a-select-option value="3">运维监控</a-select-option>
        </a-select>
    </template>
    <template slot='progress' slot-scope="text,record">
          <span>{{text}}</span>
          <span v-if='record.progressstatus'><a-icon class='arrow-up' type="arrow-up" />        </span>
          <span v-if='!record.progressstatus'><a-icon class='arrow-down' type="arrow-down" /></span>
    </template>
</a-table>

const columns = [
      {
        title: '编号',
        dataIndex: 'number',
        customRender: renderContent
      }, {
        title: '项目名称',
        dataIndex: 'name',
        customRender: (text, row, index) => {
          return {
            children: <a href="javascript:;">{text}</a>,
            attrs: {}
          }
        } 
      }, {
        title: '项目进度',
        dataIndex: 'progress',
        scopedSlots: { customRender: 'progress' } // 模板中对应的slot-scope可以用来传递参数,其中第一个参数是当前字段对应的值progress,第二个参数是当前字段对应的所有值对象,即整个data[n]
      }, {
        title: '操作',
        dataIndex: 'operate',
        scopedSlots: { customRender: 'operation' } // 直接对应插槽名为operation的模板
      }
]

const data = [
    {
    key: 6,
    number: 6,
    name: '雅典娜',
    progress: '88%',
    progressstatus: 1
  }
]

 

Logo

一站式虚拟内容创作平台,激发创意,赋能创作,进入R空间,遇见同道,让优质作品闪耀发光。​

更多推荐