将所有el-select多选所有删除icon隐藏
时间: 2024-09-09 09:04:08 浏览: 48
如果你想在Vue.js中实现当`el-select`元素发生多选操作时,自动隐藏所有非默认选项的删除图标(`.el-tag__close`),你可以创建一个计算属性来跟踪已选项目的数量,并在`watch`或者`updated`生命周期钩子里进行判断。下面是简单的实现步骤:
1. 在模板上绑定`v-model`,这是`el-select`的基础数据绑定:
```html
<el-select v-model="selectedItems" @input="updateSelection">
<!-- ... -->
</el-select>
```
2. 定义一个计算属性来跟踪选中的项目:
```javascript
computed: {
selectedLength () {
return this.selectedItems.length;
},
},
```
3. 使用`watch`或`updated`钩子,在选中值变化时更新删除图标的可见性:
```javascript
watch: {
selectedItems(newItems) {
this.$nextTick(() => {
const tags = document.querySelectorAll('.el-tag__close'); // 获取所有删除图标
for (let i = 0; i < tags.length; i++) {
const tag = tags[i];
if (i >= newItems.length) {
tag.style.display = 'none';
} else {
tag.style.display = '';
}
}
});
},
},
```
4. 更新`el-select`的`@input`事件处理函数,触发数据变更:
```javascript
methods: {
updateSelection() {
// ...这里处理el-select的输入事件,比如同步数据到服务器等
this.selectedItems = [...this.originalItems]; // 或者使用其他方法更新原始选中项
},
},
```
5. 初始状态下,设置默认选中的项目,这样在第一次渲染时不会隐藏所有的删除图标:
```javascript
data() {
return {
originalItems: [], // 初始化默认选中的项目
selectedItems: [], // 存储当前用户选择的项目
// ...其他数据
};
},
created() {
// 根据需求填充originalItems
},
```
现在当你在`el-select`中进行多选时,除了选中的项目,其他的删除图标都会隐藏起来。
阅读全文