eltable中一行中的el-button 根据值不同使用不同类型
时间: 2024-03-29 14:40:04 浏览: 102
可以在 el-button 上使用条件渲染来实现根据值不同使用不同类型的效果。具体实现可以使用 v-if 或者 v-show 指令,在模板中通过判断条件来决定 el-button 的类型。例如:
```
<el-table-column label="操作">
<template slot-scope="scope">
<el-button v-if="scope.row.status === '已完成'" type="success">已完成</el-button>
<el-button v-else-if="scope.row.status === '进行中'" type="warning">进行中</el-button>
<el-button v-else type="danger">未完成</el-button>
</template>
</el-table-column>
```
上述代码中,根据表格中每一行的 status 值不同,渲染出不同类型的 el-button。如果 status 的值为已完成,则使用 type="success" 的 el-button,如果值为进行中,则使用 type="warning" 的 el-button,否则使用 type="danger" 的 el-button。
相关问题
el-table表格外有个按钮,点击按钮可以为表格内某一列添加el-tag标签,如何设置这列宽度,若动态添加的el-tag标签超出设定的宽度,就在当前列的最后设置一个el-button,hover这个
在Vue的Element UI (ElTable) 中,如果你想实现这样的功能,首先你需要在HTML模板里设置列宽,并准备用于添加`el-tag`和`el-button`的元素。你可以通过v-for遍历表格数据,同时监听按钮的点击事件来动态添加tag和button。
1. 定义列模板,包括一个按钮和初始的列宽:
```html
<template>
<el-table-column
label="标题"
width="initial-width" <!-- 设置初始列宽 -->
:key="columnKey"
>
<template slot-scope="{ $index, row }">
{{ row.data }} <!-- 表格内容 -->
<el-button @click="addTag(row.$index)">添加标签</el-button>
<!-- 初始化无tag和button -->
<div v-if="!tags[$index]">
<span>...</span>
</div>
</template>
</el-table-column>
</template>
```
2. 编写JavaScript部分,处理按钮点击和动态添加标签:
```javascript
<script>
export default {
data() {
return {
tags: {}, // 存储每个行的tag列表
initialWidth: '100px', // 列的初始宽度
};
},
methods: {
addTag(index) {
let tag = new ElTag({
content: '新标签',
closable: true,
});
this.tags[index] = this.tags[index] || [];
this.tags[index].push(tag);
// 检查是否超出设定宽度
const tagWidth = tag.$el.offsetWidth;
if (tagWidth > parseInt(this.initialWidth)) {
// 添加一个el-button
const button = new ElButton({
size: 'mini',
type: 'primary',
content: '展开更多...',
openTagList: this.tags[index],
placement: 'bottom-end',
});
this.tags[index].push(button);
}
},
},
};
</script>
```
在这个例子中,当点击“添加标签”按钮时,会创建一个新的`el-tag`并将其添加到对应行的`tags`数组中。如果tag的宽度超过了初始设定的宽度,还会动态添加一个`el-button`。
eltable动态添加el-input
要在el-table动态添加el-input,你可以使用插槽(slot)来实现。在你的el-table-column中,你可以使用template插槽来添加el-input。首先,在el-table-column中添加一个template标签,并设置slot-scope="scope"来获取行数据的上下文。然后,在template标签内部,根据你的需求来判断是显示el-input还是其他内容。在这个例子中,根据editIndex的值来确定是否显示el-input。如果editIndex不等于当前行的索引(scope.$index),则显示span和一个编辑图标。如果editIndex等于当前行的索引(scope.$index),则显示el-input和保存、取消按钮。你可以使用v-model绑定el-input的值。
以下是一个示例代码:
```html
<el-table-column label="名" width="300">
<template slot-scope="scope">
<div v-if="editIndex !== scope.$index">
<span>{{ scope.row.name }}</span>
<i class="el-icon-edit" @click="toEditName(scope.$index, scope.row.name)" />
</div>
<div v-else>
<el-input v-model="editName" size="mini" style="width: 60%" />
<el-button type="text" @click="toSaveName(scope.row)">保存</el-button>
<el-button type="text" @click="toCancelEdit()">取消</el-button>
</div>
</template>
</el-table-column>
```
在上述代码中,toEditName方法用于设置editIndex和editName的值,从而切换编辑状态。toCancelEdit方法用于取消编辑,将editIndex和editName重置为空。toSaveName方法用于保存编辑后的值,并更新数据。你可以根据自己的需求来定义这些方法的具体实现。<span class="em">1</span><span class="em">2</span>
#### 引用[.reference_title]
- *1* [vue el-table实现自定义表头](https://download.csdn.net/download/weixin_38530846/12930705)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* [【vue】el-table里面点击展开嵌套el-input和el-select 动态切换数据](https://blog.csdn.net/weixin_48200589/article/details/126127294)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文