【发布时间】:2020-04-13 03:00:25
【问题描述】:
<template>
<v-data-table
:headers="headers"
:items="records"
:items-per-page="5"
show-select
loading
item-key="id"
class="elevation-1"
>
<template v-slot:top>
<div>
<table-tabs></table-tabs>
<v-text-field
append-icon="mdi-close"
class="mx-4"
flat
hide-details
label="Search"
prepend-inner-icon="mdi-magnify"
solo-inverted
></v-text-field>
</div>
</template>
<template v-slot:item.id="{ item }">
<product-instance-cell v-bind:item="item" :data="item"></product-instance-cell>
</template>
<template v-slot:item.boxCode="{ item }">
<serial-cell v-bind:boxCode="item.boxCode" :serial="item.boxCode"></serial-cell>
</template>
<template v-if="hasField('manager')" v-slot:item.manager="{ item }">
<user-cell v-bind:user="item.manager" :user="item.manager"></user-cell>
</template>
<template v-slot:item.customer="{ item }">
<customer-cell v-bind:customer="item.customer" :customer="item.customer"></customer-cell>
</template>
<template v-slot:item.updatedAt="{ item }">
<date-cell v-bind:updatedAt="item.updatedAt" :date="item.updatedAt"></date-cell>
</template>
</v-data-table>
如下所示,我必须直接在模板下传递字段名称和单元格组件才能为特定模型和字段绘制自定义单元格。
<template v-slot:item.id="{ item }">
<product-instance-cell v-bind:item="item" :data="item"></product-instance-cell>
</template>
但我坚持要做的是动态加载单元格,因为我的表格没有特定的使用模型。该表格可以绘制 5 种不同类型的模型 Array<T>,我有一个名为 table spec 的东西,其中包含绘制表格所需的所有信息。例如
标题单元格名称、排序逻辑、最大行数、按模型 字段名称的单元格组件名称等。
处理不需要其他模板的数据表头很容易,并且上面的完整模板代码也可以工作。但仅适用于一种型号。我想用规范数据创建超级动态表。如何做到这一点?
没有针对这种情况的具体解决方案,但欢迎其他 vue 的哲学方法。
【问题讨论】:
-
每个模型最好有单独的代码,否则你将不得不考虑太多的异常,你的代码可能会成为科学怪人
-
@ariel 我理解,但我已经预先定义了每个模型所需的所有规定和操作。所以我真的很想让表格抽象和基于 oop
标签: javascript typescript vue.js