用户界面通常由不同的输入设备组成,如按钮,输入栏,对话框,滑块等。事件顺序通常决定了预期的行为,并且这种行为通常不容易在简单的规则中发现。如何在模块化用户界面中管理基于事件的输入?
是否有这种类型的问题的通用方法?
作为一个界面变得如此简单的例子,可以使用一个带有3个切换按钮的界面。如果按钮点击的行为取决于每个按钮的状态,则可以使用2^3 * 3 = 24个事件情况。如果行为还取决于事件历史记录,则事件案例的数量呈指数增长。
作为一个现实生活中的例子,看看我正在使用的wysiwyg文本编辑器。我选择编辑器上的焦点/模糊事件来启用/禁用编辑器。有些按钮(小部件)会立即将焦点返回到编辑器,而其他按钮会打开一个对话框。在下面的图片中,显示点击界面元素时焦点的位置。
我发现管理焦点是一个棘手的问题,通常会引入不需要的或反直觉的行为。
@Sagiv现在,该对话框具有打开和关闭的事件处理程序,它将焦点返回到#txt(默认行为)。在(2)的情况下,该对话框还具有由编辑调用的公共功能。在这里我设置了一个防止默认行为的标志。它可以工作,但我不希望有对话框的新插件必须实现相同的功能,同时我想给予自由让他们拥有自己的功能(例如,针对不同CMS解决方案的图像上传) –
研究BackboneJS,这对于在UI中控制和共享事件非常有用。 – AlienWebguy
@AlienWebguy。我最近学习了骨干,而且做得很好。但据我看来,这并不能解决我的前三个子弹。 (也许我们的评论是在我更新我的问题之前发布的,所以没有冒犯) –