iview下拉添加全部选择功能遇到的坑

  • 需求

在iview的select下拉多选菜单下,加入一个全部选择和全部清空的功能。

  • 实现

点击全部选择的时候,将当前下拉菜单下所有的item都加到select绑定的list里面

  • 问题

二联下拉菜单,当一级下拉选择一个后,点击二级下拉的全部选择,再到一级下拉选择另外一个,再点击二级下拉的全部选择,此时,第一次一级下拉的内容和第二次一级下拉的内容,都会被选中。如图。

  1. 一级下拉选择楼层3,二级下拉点击全选
    iview下拉添加全部选择功能遇到的坑iview下拉添加全部选择功能遇到的坑

  2. 一级下拉选择楼层4,二级下拉选择全选
    iview下拉添加全部选择功能遇到的坑iview下拉添加全部选择功能遇到的坑
    问题出现了,此时,楼层三的内容也被选中放到了里面。

  • 分析过程
    开始以为,是切换一级下拉之后,二级下拉里的数据没有被销毁继续保存着,点击全选之后,把这些数据全部选择了。但是,分析之后发现一级下拉菜单重新选择之后,重新发送了请求,二级下拉菜单组件的数据中,没有之前的数据了,只有最新的楼层四的数据,所以这个假设不成立。问题应该不是出现在点击全选之后,而是点击全选之前,那么就是select绑定的list有问题。打印整个过程的list(如上面图片控制台部分所示),发现重新选择二级之后,list没有清空,继续保留着上一次的内容。

  • 解决办法
    问题找到了,这个解决就很简单,全选的时候先把上一次的list清空就好了。