ant-design-vue 动态新增行
时间: 2023-07-18 14:40:16 浏览: 203
要动态新增行,你需要使用 `Table` 组件提供的 `$refs` 属性和 `insert` 方法。首先,在 `Table` 组件上添加 `ref` 属性:
```html
<template>
<a-table :columns="columns" :data-source="data" row-key="id" ref="table">
<!-- ... -->
</a-table>
</template>
```
然后,在需要新增行的地方,通过 `$refs` 获取 `Table` 组件的实例,并调用 `insert` 方法:
```js
this.$refs.table.insert({
id: 123,
name: '新行',
// 其他列数据...
});
```
其中,`insert` 方法需要传入一个包含所有列数据的对象作为参数。这样就可以动态新增行了。注意,如果要新增的行是异步获取的数据,建议在获取到数据后再使用 `insert` 方法,以避免数据不一致的情况。
相关问题
Ant-design-vue vue3树形控件tree 新增节点,删除节点,
在Vue3中,Ant-Design-Vue的Tree组件的用法与Vue2有些不同。以下是示例代码:
```html
<template>
<a-tree :tree-data="treeData" :draggable="true" :block-node="true" :show-line="true" :default-expanded-keys="defaultExpandedKeys" v-model:selected-keys="selectedKeys" @select="onSelect">
<template #title="{ key, title }">
<span>
{{ title }}
<a @click.stop="addNode(key)">Add</a>
<a @click.stop="removeNode(key)">Delete</a>
</span>
</template>
</a-tree>
</template>
<script>
import { ref } from 'vue'
export default {
setup() {
const treeData = ref([
{
title: 'Parent 1',
key: '0-0',
children: [
{
title: 'Child 1',
key: '0-0-0'
},
{
title: 'Child 2',
key: '0-0-1'
}
]
}
])
const defaultExpandedKeys = ref(['0-0'])
const selectedKeys = ref([])
const addNode = (parentKey) => {
const newNode = { title: 'New Node', key: `${parentKey}-${treeData.value.length}` }
const parentNode = treeData.value.find(node => node.key === parentKey)
if (!parentNode.children) {
parentNode.children = []
}
parentNode.children.push(newNode)
treeData.value = [...treeData.value]
}
const removeNode = (key) => {
const parentKey = key.split('-').slice(0, -1).join('-')
const parentNode = treeData.value.find(node => node.key === parentKey)
parentNode.children = parentNode.children.filter(node => node.key !== key)
treeData.value = [...treeData.value]
}
const onSelect = (selectedKeys) => {
console.log(selectedKeys)
}
return {
treeData,
defaultExpandedKeys,
selectedKeys,
addNode,
removeNode,
onSelect
}
}
}
</script>
```
这个示例与Vue2中的示例类似,只是我们使用了Vue3的Composition API来编写代码。我们使用了ref函数来创建响应式变量。在addNode和removeNode方法中,我们使用了Vue3的响应式API来更新数据。当我们改变treeData的值时,我们必须通过解构赋值来创建一个新的数组来触发更新。注意,在Vue3中,我们使用v-model来绑定selected-keys。
Ant-design-vue 树形控件tree 新增节点,删除节点,
Ant-Design-Vue的Tree组件提供了add方法来新增节点和remove方法来删除节点。以下是示例代码:
```html
<template>
<a-tree :tree-data="treeData" :draggable="true" :block-node="true" :show-line="true" :default-expanded-keys="defaultExpandedKeys" @select="onSelect">
<template #title="{ key, title }">
<span>
{{ title }}
<a @click.stop="addNode(key)">Add</a>
<a @click.stop="removeNode(key)">Delete</a>
</span>
</template>
</a-tree>
</template>
<script>
export default {
data() {
return {
treeData: [
{
title: 'Parent 1',
key: '0-0',
children: [
{
title: 'Child 1',
key: '0-0-0'
},
{
title: 'Child 2',
key: '0-0-1'
}
]
}
],
defaultExpandedKeys: ['0-0']
}
},
methods: {
addNode(parentKey) {
const newNode = { title: 'New Node', key: `${parentKey}-${this.treeData.length}` }
this.$set(this.treeData.find(node => node.key === parentKey), 'children', [...this.treeData.find(node => node.key === parentKey).children, newNode])
},
removeNode(key) {
const parentKey = key.split('-').slice(0, -1).join('-')
this.$set(this.treeData.find(node => node.key === parentKey), 'children', this.treeData.find(node => node.key === parentKey).children.filter(node => node.key !== key))
},
onSelect(selectedKeys) {
console.log(selectedKeys)
}
}
}
</script>
```
在这个示例中,我们使用了Tree组件自带的title slot来添加按钮。点击Add按钮会调用addNode方法,该方法会在选定节点下添加一个新节点。点击Delete按钮会调用removeNode方法,该方法会删除选定节点。这两个方法都使用了Vue的$set方法来更新数据。同时,我们也监听了Tree组件的select事件来打印出所选中的节点。
阅读全文
相关推荐














