# element ui

解决element ui el-select控件多选时option设置为disabled,但可以删除标签,造成无法恢复的bug

问题起因

今天遇到一个问题,需求是,客户选择栏目时,不属于自己的栏目不可修改。但需要显示出来。实现需求使用了element ui的el-select组件。
对于已选栏目的显示,和对栏目的选项取消都比较好。不属于自己的栏目使用了option的disabled属性。列表中的选项控制正常,对于disabled属性为true的元素不可选。
但是在展示已选则的栏目时,option中禁用的选项依然有删除的小叉号。而且还是可以使用的,点击后就被删除了。在列表中的选中状态也取消了。这可闹大了,没法恢复啊。

解决思路

思路很简单,在对选项进行移除时做个判断。如果选项是禁用的,就不操作。
实现中用到了value属性,用于显示备选项。change事件用于处理选中的值,remove-tag事件处理移除选项时的判断
有几个问题需要注意,事件的执行顺序是先出发change后出发remove-tag所以要让数据返回变为异步,保证remove-tag事件完成后在返回数据