JavaScript有限状态机

时间:2016-03-08 17:12:51

标签: javascript forms state-machine fsm

问题陈述

我有一个表单,我需要状态应用它,因为有多种可能的场景,而不是一个非常定制,而不是非常干净的JavaScript类,如果点击它,然后单击,但不是这个,等等等等等等。我想应用状态和转换来覆盖场景。

我想使用jakesgordon/javascript-state-machine来建模状态及其转换。我正在思考......

{
    initial: 'none',
    events: [
        { name: 'completing',   from: ['none', 'completing', 'complete', 'blocked'],    to: 'completing'    },
        { name: 'completed',    from: ['blocked', 'completing'],                        to: 'completed'     },
        { name: 'continue',     from: ['blocked', 'completed'],                         to: 'continue'      },
        { name: 'blocked',      from: ['none', 'completing', 'complete'],               to: 'blocked'       }
    ]
}

我希望得到关于最佳状态和转换(以及可能何时在每种情况下转换它们)的一些输入callbacks

表格

The form UX pin can be found here.(截图太长了。)

规则及其方案

  • 访问“继续”按钮

状态complete遵循以下规则: 导航"继续"第2页的按钮应该变为灰色且不可用,直到满足以下两个方案中的任何一个

情景1

1)。我正在完成这个筛选工具...... - 用户选择 - 在别人的支持下自己或我自己

2)。您对其他人如何对待您有任何疑虑吗? - 用户选择 - 否

3)。你觉得很难与别人沟通吗? - 用户选择 - 否

4)。您是否觉得难以理解或保留信息? - 用户选择 - 否

5)。您是否难以做出决策或了解其影响? - 用户选择 - 否

场景2

1)。我正在完成这个筛选工具...... - 用户选择 - 代表其他人

2)。所有问题都已完成

  • 您对其他人如何对待您有任何疑虑吗?

状态blocked遵循以下规则:第1页上存在条件行为,这取决于您对其他人如何对待您有任何疑虑而选择了哪个选项?

场景1

我正在完成这个筛选工具...... - 用户选择 - 我自己

您对其他人如何对待您有任何疑虑吗? - 用户选择 - 是

1)。将显示此部分的信息警报 2)。通讯&部分理解是灰色的,用户无法使用

您对其他人如何对待您有任何疑虑吗? - 用户选择 - 否

1)。不显示此部分的信息提示

2)。通讯&部分理解未被解读并可供用户使用

场景2

我正在完成这个筛选工具...... - 用户选择 - 我自己在别人的支持下或代表其他人

您对其他人如何对待您有任何疑虑吗? - 用户选择 - 是

1)。将显示此部分的信息警报 2)。通讯&部分理解未被解读并可供用户使用

用户选择 - 否

1)。不显示此部分的信息警报 2)。通讯&部分理解未被解读并可供用户使用

当用户填写表单时,他们处于completing状态。任何人都可以建议设置以及何时更改。

0 个答案:

没有答案