当前位置:首页 > VUE

vue实现动态columns

2026-01-19 03:50:15VUE

Vue 实现动态 columns 的方法

使用 v-for 动态渲染表格列

通过 v-for 指令可以动态渲染表格的列,columns 数据可以来自组件的 props 或 data。

<template>
  <table>
    <thead>
      <tr>
        <th v-for="column in columns" :key="column.key">
          {{ column.title }}
        </th>
      </tr>
    </thead>
    <tbody>
      <tr v-for="item in data" :key="item.id">
        <td v-for="column in columns" :key="column.key">
          {{ item[column.dataIndex] }}
        </td>
      </tr>
    </tbody>
  </table>
</template>

<script>
export default {
  props: {
    columns: {
      type: Array,
      required: true
    },
    data: {
      type: Array,
      required: true
    }
  }
}
</script>

动态修改 columns 数据

可以通过方法动态修改 columns 数据,实现列的增删改查。

methods: {
  addColumn() {
    this.columns.push({
      key: 'newColumn',
      title: 'New Column',
      dataIndex: 'newColumn'
    })
  },
  removeColumn(key) {
    this.columns = this.columns.filter(column => column.key !== key)
  }
}

使用计算属性处理动态列

计算属性可以用于对 columns 数据进行处理,例如过滤、排序等。

computed: {
  filteredColumns() {
    return this.columns.filter(column => !column.hidden)
  }
}

结合插槽实现更灵活的列渲染

使用插槽可以自定义列的渲染方式,提供更大的灵活性。

<template>
  <table>
    <thead>
      <tr>
        <th v-for="column in columns" :key="column.key">
          <slot :name="`header-${column.key}`" :column="column">
            {{ column.title }}
          </slot>
        </th>
      </tr>
    </thead>
    <tbody>
      <tr v-for="item in data" :key="item.id">
        <td v-for="column in columns" :key="column.key">
          <slot :name="`cell-${column.key}`" :item="item" :column="column">
            {{ item[column.dataIndex] }}
          </slot>
        </td>
      </tr>
    </tbody>
  </table>
</template>

使用第三方组件库

许多 Vue 组件库如 Element UI、Ant Design Vue 等提供了动态 columns 的功能。

<template>
  <el-table :data="data">
    <el-table-column
      v-for="column in columns"
      :key="column.key"
      :prop="column.dataIndex"
      :label="column.title"
    />
  </el-table>
</template>

响应式 columns

结合 Vue 的响应式特性,columns 的变化会自动触发视图更新。

vue实现动态columns

watch: {
  columns: {
    handler(newVal) {
      console.log('Columns changed', newVal)
    },
    deep: true
  }
}

标签: 动态vue
分享给朋友:

相关文章

vue实现动态显示页面

vue实现动态显示页面

vue实现动态显示页面 在Vue中实现动态显示页面可以通过多种方式,包括条件渲染、动态组件、路由控制等。以下是几种常见的方法: 条件渲染v-if/v-show 使用v-if或v-show指令可以根据…

vue实现绑卡的原理

vue实现绑卡的原理

Vue 实现绑卡的原理 Vue 实现绑卡功能通常涉及前端表单处理、数据绑定、验证以及和后端 API 的交互。以下是实现绑卡功能的核心原理和步骤: 数据绑定与表单处理 Vue 通过 v-model 指…

vue实现公式

vue实现公式

在Vue中实现公式展示或计算可以通过多种方式实现,以下为具体方法: 使用模板插值与计算属性 若公式较简单,可直接在模板中使用插值表达式或计算属性。例如计算圆的面积: <template>…

vue实现switch

vue实现switch

Vue 实现 Switch 开关组件 在 Vue 中实现 Switch 开关组件可以通过自定义组件或使用现有 UI 库完成。以下是几种常见实现方式: 自定义 Switch 组件 创建一个基础 Sw…

vue实现markdown

vue实现markdown

Vue 实现 Markdown 编辑器 在 Vue 中实现 Markdown 编辑器可以通过集成第三方库或自定义解析器完成。以下是两种常见方法: 使用第三方库(如 marked 或 markdown…

vue 实现打印

vue 实现打印

Vue 实现打印功能的方法 在Vue项目中实现打印功能,可以通过以下几种方式实现: 使用window.print()方法 通过调用浏览器的原生打印API实现基础打印功能,适用于简单内容打印。 //…