自动模式是自定义事件的条件中提供一个便捷功能,要使用自动模式,我们需要先添加一个自定义事件,并且新增一个条件,如下所示:
点击添加条件按钮后,会打开条件的编辑弹窗,弹窗比较长,注意看弹窗的底部有一个名为自动模式的开关,默认它是勾选的,表示自动模式默认是开启的。
自动模式的概念是,如果自动模式开启,当一个自定义事件满足其条件时,会触发自定义事件下配置的所有的动作,这个是自定义条件的基本功能;相反,当一个自定义事件不满足其条件时,就会自动触发自定义事件下配置的所有动作的【反向动作】。
下图所示的是平台自带的常用的动作:
反向动作是一个easyv平台的概念,它指的是与某个自定义事件动作在逻辑意义上相反的动作。而并不是所有的动作都有反向动作,有反向动作的动作及其反向动作如下所示:
动作 | 反向动作 | 意义 |
显示 | 隐藏 | |
隐藏 | 显示 | |
移动 | (重置移动) | 恢复位置到组件的原始位置,就是在配置项配置的位置 |
旋转 | (重置移动) | 恢复旋转为0度 |
缩放 | (重置缩放) | 恢复缩放为100% |
更新组件配置 | (重置组件配置) | 恢复配置项为默认的配置项 |
关于表格中带括号的动作,并不是平台中能找到的动作名字,而是自动模式自动执行的操作,其意义都在表格第三列做出说明。
从上面的表格可以看出,有反向动作的动作都是easyv平台所有组件都自带的那些动作,除上表列出的动作之外的,包括那些组件特有的动作,都是没有反向动作的。
现在有这样一个场景:需要点击选项卡第一项,显示标题A,不显示标题B;点击选项第二项,显示标题B,不显示标题A。就是标题A和标题B是互斥的,选项卡点哪个就显示哪个。
可以配置如下的自定义事件:
我们配置了两个自定义事件,分别配置了标题A和标题的B的显示动作,这样就能够实现上述的需求。
按理说,选中选项卡第一项之后,应该要显示标题A并隐藏标题B,但我们没有配置隐藏标题B的动作,却能够完全实现需求,是为什么呢?正是因为自动模式。它是默认开启的,我们也不需要特别开启它(除非你主动关闭它了)。
注意平台的机制是每次触发了某个类型的自定义事件,就会依次执行该类型的所有自定义事件。
基于上述场景分析自动模式的作用过程:当选中第一项时,第一个自定义事件开始判断条件,条件为true,则执行标题A的显示动作;然后第二个自定义事件开始判断条件,条件为false,并且自动模式处于开启状态,按照自动模式的机制,会自动执行标题B显示的反向动作,就是执行标题B的隐藏动作。这样整体效果上就是选中了第一项之后,标题A显示,标题B隐藏。
总结一下就是,因为自动模式会自动执行反向动作,原本需要配置的反向动作就省略了,就可以节省一半的动作配置,是一个便捷化的功能。
实际配置交互和排查问题的过程中,需要特别注意的就是显示和隐藏这两个常用的动作,它们是具有反向动作的,而自动模式默认是打开的,这意味着每个有条件的自定义事件,如果它还配置了显示或隐藏的动作(当前其他有反向动作的动作也是一样),都需要特别关注它的行为。
我们来看一个常见的错误示例:
在上文的示例的基础上,新增一个组件标题C,需要选中选项卡第二项是把标题C隐藏了。并且我们在第二个自定义事件的动作中新增一个动作:对控制标题C的隐藏,如下所示:
你可能你会问,事件1中没有对标题C的操作,为什么事件2中要对标题C进行隐藏,但其实是有这种场景的,标题C的显示可能是别的组件触发的。
这时候点击选项卡的第一项后,发现标题C莫名其妙显示出来了,按照上文的作用过程分析,点击选项卡第一项后,执行第二个自定义事件时,因为不满足条件,所以自动执行所有动作的反向动作,就会执行标题C显示的反向动作,也就是标题C的显示。
这个结果肯定是意料之外,因为我们在事件1中只配置了标题A的显示,并不期望对标题C会有什么影响。
所以一般来说建议是除了上文常规用法举例中所举例的场景之外情况,都尽量避免使用自动模式。要使用自动模式,要对所有的自定义事件及其条件触发时机,和所有动作的反向动作执行情况,综合进行判断。如果交互比较复杂,很难分析出正确的结果,而且容易出bug。不如主动关掉自动模式,补全所有的反向动作(一般复杂场景下都会不得不配置所有的反向动作,除非是类似上文的简单场景)。
文章
10.53W+人气
19粉丝
1关注
©Copyrights 2016-2022 杭州易知微科技有限公司 浙ICP备2021017017号-3 浙公网安备33011002011932号
互联网信息服务业务 合字B2-20220090