资讯专栏INFORMATION COLUMN

记录一次多开关多状态情况下结果的设计

qieangel2013 / 2770人阅读

摘要:最近碰到一个需求有一个页面有三个认证这三个认证会变更就是说可能这期是认证认证就可以进行下一步但是下期就变成认证了需求希望针对这三个开关做成这样开关开关开关都有三种状态为必须做为选做一个为不做如果三个开关配置成那就代表开关开关都要做开关不用做

最近碰到一个需求,有一个页面有三个认证,这三个认证会变更.就是说可能这期是认证A,认证B,就可以进行下一步.但是下期就变成B,认证C了.需求希望针对这三个开关做成这样,开关A,开关B,开关C,都有三种状态.1,2,3.1为必须做,2,为选做一个.3为不做.如果三个开关配置成:[1,2,3],那就代表开关A,开关B都要做,开关C不用做.(ps: 选择做一个的是指,如果有两个开关状态都是2,则2选一,如果有3个开关状态为2,则3选一.但是如果只有一个开关状态为2,则这个必须做).进入下一个页面的条件就是,这三个开关必须按照配置项做了.

目前设计的方案为:

其中,A,B,C代表三个开关,switch代表开关状态,flag代表开关是否完成.

代码实现:

checkField: function () {
  var flagSwitch = true,
      choiceFlag = true;  
 
//这里a,b,c是为了简单命名的,在这里分别代表含义: 开关A,开关B,开关C
//flag,含义: 是否已经做了开关A,开关B,开关C.statusFlagA,statusFlagB,
//statusFlagC,的取值可能性分别为1,0.(做或者没做)
//switch,含义: 开关获取的结果.switchSet[0]代表开关A获取的结果,switchSet[1]代表开关B获取的结果,switchSet[2]代表开关C获取的结果.
 //定义数据结构.
var obj = {
    a: {
        flag: statusFlagA,
        switch: switchSet[0]
    },
    b: {
        flag: statusFlagB,
        switch: switchSet[1]
    },
    c: {
        flag: statusFlagC,
        switch: switchSet[2]
    }
};
//如果开关数组中有一个是可选,则可选标识choiceFlag置为false.
switchSet.forEach(function (elem) {
    if (elem == 2) {
        choiceFlag = false;
    }
});

//遍历obj,查看obj中数据,进行判断是否显示下一步.
["a", "b", "c"].forEach(function (val) {
    if (obj[val].switch == 1) {
        if (!obj[val].flag) {
            flagSwitch = false;
            return false;
        }
    } else if (obj[val].switch == 2) {
        if (!choiceFlag && obj[val].flag == 1) {
            choiceFlag = true;
        }
    }
});
return (flagSwitch && choiceFlag);
},

写到这里,代码实现的核心就完了.

                                             翥于2017.9.13简记

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/91748.html

相关文章

  • javascript单例、代理、状态设计模式

    摘要:代理模式代理模式为一个对象提供一个代用品或占位符,以便控制对于它访问。这种代理就叫虚拟代理。保护代理用于对象应该有不同访问权限情况。写时复制代理时虚拟代理的一种变体。 一、创建型设计模式(三大类设计模式) 创建型设计模式 --创建说明该类别里面的设计模式就是用来创建对象的,也就是在不同的场景下我们应该选用什么样的方式来创建对象。 1. 单例模式 ==单例模式(Singleton)==:...

    0xE7A38A 评论0 收藏0
  • 【程序员】个人职业发展规划方法论分享(持续更新)

    摘要:文中涉及到的工具幕布插件番茄工作法助理原则原则是目标管理中的一种方法。作为职业发展规划的目标来说,一般人最好是制定一个中期的目标,时间长短在半年至三年内。所以这篇旨在分享我在做个人职业规划中的一些心得体会方法论思想等。 2019/07/14 UPDATE 本周想分享一下之前阅读过的一本书《坚持,一种可以养成的习惯》,这本书主要讲的是如何去养成一个习惯,在本次的初期职业目标的学习计划中,...

    h9911 评论0 收藏0
  • 2021爱智先行者—记录一次 Spirit 1 和 IoT Pi 开发板实战经历

    摘要:安装完成后,在的左下角选择创建项目,具体操作如下图所示项目创建页面会出现很多模板库,如果只有两个或者没有模版,可以尝试点击左下角的刷新模板信息按钮。 目录 前言 正文 一、IoT Pi 开发板介绍 二、开发实战 1. 连接设备 2. 搭建开发环境 3. 开始编码 4. 编译打包 5. 安装应...

    Amos 评论0 收藏0
  • 以小窥大,从一盏路灯看亿万物联网之路

    摘要:而要实现物物相连,一共有个阶段性任务,而这个阶段性任务,也伴随着巨大的挑战本文分享自华为云社区云驻共创以小窥大,从一盏路灯看亿万物联网之路云驻共创以小窥大,从一盏路灯看亿万物联网之路,作者启明。 摘要:IoT, Internet of Things,物联网,顾名思义,是物物相连。而要实现物...

    appetizerio 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<