Javascript 模式:条件事件处理程序

2023-12-02

给定例如某种类实例具有状态(例如“活动”、“非活动”……)。该实例还附加了一个点击事件,例如一个链接,但事件处理程序根据实例的状态执行不同的操作。

伪代码:

IF instance state IS 'active' AND link is clicked THEN call function A
IF instance state IS 'inactive' AND link is clicked THEN call function B
…

我想知道正确处理这种情况的良好做法是什么:

  • 通常使用哪些模式来实现这一目标?
  • 您是否在事件处理程序中使用条件?
  • 或者当状态改变时绑定和解除绑定处理程序?
  • 我是否缺少一些明显的其他/更好的解决方案?

UPDATE

在阅读到目前为止的答案时,似乎有一种强烈的倾向在处理程序中使用条件。虽然我私下里希望我可能错过了一个替代方案,但我已经预料到了这一点。

我喜欢 @J-P 的方法,因为它单独保持方法和状态的配对,这似乎比简单的方法更具可扩展性和可维护性switch or if/else陈述。 但是,我很想知道其他地方是否以不同的方式解决这个问题,也许使用不同语言的示例?


通常使用哪些模式来实现这一目标?就像是this
您是否在事件处理程序中使用条件?是的,参见示例
或者当状态改变时绑定和解除绑定处理程序?不,但有可能。
我是否缺少一些明显的其他/更好的解决方案?我不这么认为

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript 模式:条件事件处理程序 的相关文章

随机推荐

  • SQL WHERE 子句中的聚合函数

    大学考试时有一道题 是否可以使用聚合函数SQL WHERE条款 我一直认为这是不可能的 而且我也找不到任何例子如何做到这一点 但我的答案被标记为错误 现在我想知道在哪些情况下可以在WHERE 另外 如果不可能的话 最好能获得描述它的规范的链
  • PDO - 将字段名称作为变量传递

    我只是将代码从 mysql query 样式命令迁移到 PDO 样式 但遇到了问题 旧代码如下所示 query list menu SELECT GET section name from myl menu hide show WHERE
  • Vagrant ssh 'private_key_path` 文件必须存在

    我在 vagrant up 期间收到此错误 There are errors in the configuration of this machine Please fix the following errors and try agai
  • Java:使用itext读取PDF书签名称

    我正在处理包含多个文档的单个 PDF 每个文档都有一个书签 我需要读取我正在构建的调节应用程序的书签名称 下面的代码对我不起作用 我试图将书签名称放入title细绳 有人可以提供任何指导吗 非常感谢 PdfReader reader new
  • 防止 QScintilla 中触发键盘快捷键(示例代码)

    我想防止在 QScintilla 小部件中编辑代码时触发应用程序键盘快捷键 就像普通的 QLineEdit 字段不会触发一样 在下面的可执行示例代码中 无法在 QScintilla 小部件中键入空格 因为空格键已设置为快捷方式 但在 QLi
  • 使用 C# 将字符串表达式转换为整数值[重复]

    这个问题在这里已经有答案了 抱歉 如果这个问题已经得到解答 但我没有找到合适的答案 我在 C 中有一个字符串表达式 需要将其转换为 int 或十进制值 例如 string strExp 10 20 30 输出应该是 60 我该怎么办 Fwi
  • 斯威夫特||返回一个可由 API 调用中的其他方法使用的类

    我正在从移动应用程序调用 HERE Weather API 并且需要将当前天气作为对象返回 以便其他方法可以在给定时间段 例如 30 分钟更新间隔 内使用该信息 我根据这个网站对异步调用有了一个粗略的了解https fluffy es re
  • RestEASY 和 Jackson 不兼容 - NoSuchMethodException

    我将我的项目从JBoss AS 7 2 to 野蝇8 0经过一段时间的版本更新后 我不知道如何解决RestEASY and Jackson不兼容 In JBoss AS 7 2 I used RestEASY 3 0 6 Final and
  • 添加文本后缀

    我目前有很多这样的输入
  • 复选框的默认控件模板

    我找不到默认的 WPFControlTemplate for a CheckBox 有谁知道如何找到它吗 我所能找到的就是MSDN 上的 SilverLight 默认复选框模板 MSDN 有一个用于 WPF 复选框的自定义控件模板使用 X
  • iPhone动画帧速率和帧数

    我正在开发一个应用程序 客户想要为大图像 305x332 制作动画 客户希望在 1 75 秒内循环播放 50 帧动画 我发现该应用程序在进行如此多的处理时速度非常慢 启动 触摸响应和关闭都很慢 在 iPhone 本身上 该应用程序经常会崩溃
  • Angular CDK 拖放绝对定位元素而不跳转

    我正在尝试使用 CDK 中的 Angular Drag Drop 来实现带有可拖动元素的基本侧边栏 用户可以将它们拖放到 内容 区域中的任何位置 这意味着 元素最终应该是绝对定位的 并且应该能够存在于用户想要的任何地方 包括相互重叠 我正在
  • 如何在 VBScript 中循环?

    我想知道如何 或者甚至知道是否可以在 VBScript 中的循环内循环 从逻辑上讲 世界是这样运作的 Do until y 5 msgbox msgbox 1 loop test Do Until z 5 msgbox msgbox 2 l
  • R 中的过滤和显示过滤数据摘要的奇怪之处

    我有一个使用 R 中的 CSV 库加载的数据框 例如 mySheet lt read csv Table csv sep 我现在可以打印该 mySheet 对象的摘要 summary mySheet 它将向我显示每一列的摘要 例如 名为 D
  • go中如何导入本地包?

    我是新来的 正在处理我想要本地化的示例代码 在原来的main go导入声明是 import log net http github com foo bar myapp common github com foo bar myapp rout
  • 节点服务器在解析 JSON 时崩溃

    看起来我的节点服务器死掉了parseJSON 查看日志 最后一条消息是 解析之前 并且从未打印 解析之后 奇怪的是 我用 try catch 包装了 JSON pars 所以我不确定它是如何导致服务器崩溃的 有什么想法吗 logger pr
  • glmmLasso 错误和警告

    我正在尝试使用 glmmLasso 在广义线性混合模型中执行变量选择 但出现了一个我无法解决的错误和警告 数据集不平衡 一些参与者 PTNO 拥有比其他参与者更多的样本 无缺失数据 我的因变量是二进制的 所有其他变量 除了 ID 变量 PT
  • 如何从Google Play商店获取应用市场版本信息?

    如何从 Google Play 商店获取应用程序版本信息 以便在 Play 商店应用程序更新时提示用户强制 建议更新应用程序 即用户使用旧版本应用程序时 我已经经历过android 市场 api这不是官方方式 并且还需要授权登录来自谷歌的身
  • 类将数据成员存储在顺序内存中?

    这个问题的简短版本 指向类的第一个数据成员的指针是否会导致指向其所有数据成员的指针 讨论 我正在阅读一些示例代码 这很有趣 当一个特定的函数 在本例中是glUniformMatrix4fvOpenGL 中的 C 函数 将数组作为参数 这是使
  • Javascript 模式:条件事件处理程序

    给定例如某种类实例具有状态 例如 活动 非活动 该实例还附加了一个点击事件 例如一个链接 但事件处理程序根据实例的状态执行不同的操作 伪代码 IF instance state IS active AND link is clicked T