Appearance
表格联动示例
本示例展示如何在表格内实现字段联动。
重要提示
表格只读列要响应联动,必须开启 dynamic: true。
示例:可编辑表格中的级联
vue
<template>
<DrTable
v-model:data="tableData"
:columns="columns"
:editType="'row'"
/>
</template>
<script setup>
import { ref } from 'vue'
import { generateFieldList } from 'd-render'
const tableData = ref([])
const columns = generateFieldList({
category: {
type: 'select',
label: '分类',
writable: true,
asyncOptions: async () => {
return [
{ value: 1, label: '电子产品' },
{ value: 2, label: '服装' }
]
}
},
product: {
type: 'select',
label: '产品',
writable: true,
dependOn: ['category'],
resetValue: true,
dynamic: true, // ⚠️ 必须开启
changeConfig: (config, { category }) => {
config.disabled = !category
return config
},
asyncOptions: async ({ category }) => {
if (!category) return []
const productMap = {
1: [{ value: 101, label: '手机' }, { value: 102, label: '电脑' }],
2: [{ value: 201, label: 'T恤' }, { value: 202, label: '裤子' }]
}
return productMap[category] || []
}
},
quantity: {
type: 'number',
label: '数量',
writable: true
}
})
</script>outDependOn 示例
表格内的字段可以依赖表单外的字段:
vue
<script setup>
const model = ref({
warehouse: 'WH001' // 仓库选择
})
const columns = generateFieldList({
product: {
type: 'select',
label: '产品',
writable: true,
outDependOn: ['warehouse'], // 依赖外部字段
dynamic: true,
changeConfig: (config, values, outValues) => {
console.log('仓库:', outValues.warehouse)
return config
},
asyncOptions: async (values, outValues) => {
return await fetchProductsByWarehouse(outValues.warehouse)
}
}
})
</script>小结
- ✅ 表格联动必须开启
dynamic: true - ✅ 使用
outDependOn依赖外部字段 - ✅ 使用
resetValue清空下级 - ✅ 使用
asyncOptions加载选项