从数组动态创建 html 表

Posted

技术标签:

【中文标题】从数组动态创建 html 表【英文标题】:Dynamically create html table from an Array 【发布时间】:2021-07-24 04:55:39 【问题描述】:

嘿,我对 Vue 和 javascript 还很陌生,我想创建一个 html 表。对于我的软件,我想要一个 Table.vue 组件,它可以向我显示不同的表格,如下所示。

   
        "id": 1,
        "text": "Hello"
   
   
        "id": 1,
        "status": "damaged",
        "info": "test",
        "text": "content"

   

如何动态获取这些不同表格的列以及如何显示它们?

<template>
  <table class="table">
      <thead>
          <tr>
              <th v-for="(column, index) in columns" :key="index"> column</th>
          </tr>
      </thead>
      <tbody>
          <tr v-for="(item, index) in items" :key="index">
              <td v-for="(column, indexColumn) in columns" :key="indexColumn">item[column]</td>
          </tr>
      </tbody>
    </table>
</template>
 data() 
        return 
            items: [],
            columns: []
        
    

table example

【问题讨论】:

【参考方案1】:

您需要指定应呈现的列以及包含所有数据的行。

Table.vue 可能如下所示:

<template>
  <table>
    <thead>
      <tr>
        <th v-for="(column, index) in columns" :key="index">
           column 
        </th>
      </tr>
    </thead>
    <tbody>
      <tr v-for="(row, index) in rows" :key="index">
        <td v-for="(column, index) in columns" :key="index">
           row[column] 
        </td>
      </tr>
    </tbody>
  </table>
</template>

<script>
export default 
  name: "Table",
  props: 
    columns: Array,
    rows: Array,
  ,
;
</script>

...然后父组件会将数据传递给Table.vue,如下所示:

<template>
  <Table :columns="columns" :rows="rows" />
</template>

<script>
import Table from "./components/Table";

export default 
  name: "App",
  components: 
    Table,
  ,
  data() 
    return 
      columns: ["id", "title", "description"],
      rows: [
        
          id: 1,
          title: "what is this",
          description: "i like to describe",
        ,
        
          id: 2,
          title: "wait wat?",
          description: "i like to describe, too",
        ,
      ],
    ;
  ,
;
</script>

请参阅working codesandbox。

请注意,出于性能原因,大多数实际的 Vue dataTable 组件使用render functions。

【讨论】:

以上是关于从数组动态创建 html 表的主要内容,如果未能解决你的问题,请参考以下文章

使用简单数组中的 javascript 创建动态 html 表

Django 动态表单,带有 HTML 数组的表单集

php创建动态html表

java 动态创建表

如何制作动态表

动态创建的 html 表格行上的单行选择