项目中有一个switch开关的打开与关闭事件,需求是打开总开关时,所有的分开关都要打开,关闭总开关时,所有的分开关都要关闭,同时,当所有分开关打开时,总开关打开,分开关有一个是关闭时,总开关关闭,这个需求在项目中应该很常见的,网上应该也有很多分享,在此把我的实现方法记录分享一下,有空了也要多学习下大家的实现方法。
一. 首先实现的总开关控制分开关
当总开关的状态改变时,先判断总开关的状态,如果是打开状态,就用map方法遍历table数据的每个对象的status值,这样就可以实现总开关控制所有分开关的开关情况了
二. 分开关影响总开关
先是在进入页面请求到table数据时,对数据用map方法遍历,因为请求数据messageList是一个数组,然后数组中时对象,所以这里需要将每个对象中的status状态值保存到一个新的数组arr中,然后判断arr中是否包含close值,如果包含,则说明有关闭的分开关,这是需要将总开关关闭,如果数组arr中不包含close,则说明所有的分开关都是打开状态,需要将总开关打开。
由于每个分开关打开时也要进行判断,所以将分开关控制总开关的方法提取出来,这样可以在多处调用,代码更规范
大概的实现思路是这样的,有可优化的地方欢迎大家留言探讨~