Vue element-ui <el-table-column>格式化程序–如何显示html?

丹尼尔

如何返回html格式的单元格值?

我想使用获取自定义格式的值(带有html或其他组件)<el-table-column> formatter

<el-table :data="data">
  <el-table-column v-for="(column, index) in columns" 
                   :key="index" :label="column.label" 
                   :formatter="column.formatter">
  </el-table-column>
</el-table>
data() {
  return {
    columns: [
      {
        label: 'Created at',
        formatter: (row, col, value, index) => {
          return `<span class="date">${value}</span>`
        }
      },
      // edit:
      {
        label: 'Address',
        formatter: (row, col, value, index) => {
          return `<mini-map :data="${row}"></mini-map>`
        }
      }
      // other dynamic columns...
    ]
  }
}

但是单元格内容显示为转义的html字符串。是否有可能强制使用html?

史诗编辑:我添加了一个答案与解决方案。

丹尼尔

好的,经过几个小时的集思广益,我找到了一个不错的解决方案。我将它们放在这里供其他人使用-希望对您有所帮助。

自定义列中显示的值可以是:

  • 简单字符串(prop)

  • 格式化的字符串(通过原始格式化程序,是安全的,没有任何html或组件)

  • 自定义值(html,组件,也很安全!)

为了实现这一点,我必须创建自定义格式器组件,并将其放在文件夹中,即/ TableFormatters /

为此,有一个简单的功能组件DatetimeFormatter用图标显示日期时间。

TableFormatters / DatetimeFormatter.vue

<template functional>
  <span>
    <i class="icon-date"></i> {{ props.row[props.column] }}
  </span>
</template>

<script>
  export default {
    name: 'DatetimeFormatter',
  }
</script>

这是列的配置:

import DatetimeFormatter from './TableFormatters/DatetimeFormatter'
// ...
data() {
  return {
    data: [/*...*/],
    columns: [
      name: {
        label: 'Name',
      },
      state: {
        label: 'State',
        formatter: row => {
            return 'State: '+row.state__label
        }
      },
      created_at: {
        label: 'Created at',
        formatter: DatetimeFormatter
      }
    ]
  }
}

现在是时候定义<el-table>

<el-table :data="data">
  <el-table-column 
    v-for="(column, index) in columns" 
    :key="index" 
    :label="columns[column] ? columns[column].label : column"
    :prop="column"
    :formatter="typeof columns[column].formatter === 'function' ? columns[column].formatter : null">
    <template #default="{row}" v-if="typeof columns[column].formatter !== 'function'">
      <div v-if="columns[column].formatter"
        :is="columns[column].formatter" 
        :row="row" 
        :column="column">
      </div>
      <template v-else>
        {{ row[column] }}
      </template>
    </template>
  </el-table-column>
</el-table>

这就像一个魅力。格式化程序在做什么?首先,我们检查格式化程序是否设置为function如果是这样,则本机<el-table-column>格式化程序将控制该控件,因为<template #default={row}>不会被创建。否则,将创建格式化程序组件(通过:is属性)。但是,它没有格式化程序,将显示一行的纯值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Vue.js-element-ui el-table v-for丢失了最后一项

来自分类Dev

Vue-如何设置Element-UI数据表的样式?

来自分类Dev

Vue + Element UI:如何在表格中使用动态工具提示

来自分类Dev

Vue + Element UI:如何将数据绑定到卡片组件?

来自分类Dev

Vue - how can i style an Element-UI datatable?

来自分类Dev

如何:格式化Swift UI按钮

来自分类Dev

Vue元素UI动态更改El-Select颜色

来自分类Dev

UI5:如何在其他视图中重用格式化程序?

来自分类Dev

在appendRow easy-ui中使用格式化程序

来自分类Dev

Spring MVC:如何在JSP EL中显示格式化的日期值

来自分类Dev

如何设置Vue Core UI选择值

来自分类Dev

如何设置Vue Core UI选择值

来自分类Dev

如何绑定文本并使其在UI上自行格式化?

来自分类Dev

如何格式化jQuery UI进度栏

来自分类常见问题

如何在Vue组件中格式化货币?

来自分类Dev

VueJS Element-UI el-date-picker 自定义验证

来自分类Dev

UI网格-格式化数据

来自分类Dev

重新格式化 ListTile UI Flutter

来自分类Dev

Vue + Vuex:格式化输入数据

来自分类Dev

sap.ui.table.Table和sap.ui.table.TreeTable不显示最后一个数据行

来自分类Dev

Kendo UI日期选择器格式化后最初不显示值

来自分类Dev

Gooddata.UI - 图表未显示,表格未格式化

来自分类Dev

UI5:格式化程序从XML视图多次调用或过早

来自分类Dev

如何在sap.ui.table.Table中突出显示整行

来自分类Dev

如何使ui-sref通过element.append动态工作?

来自分类Dev

如何在 element-ui 表中添加 keydown 事件?

来自分类Dev

保存“ * .php / *。vue”:运行“ PHP Intelephense / Vetur”格式化程序

来自分类Dev

Highcharts-vue - 使用工具提示/标签格式化程序()

来自分类Dev

如何在 Vue 中使用 angular.element()

Related 相关文章

热门标签

归档