it-swarm.cn

从UI(或用户)的角度来看,什么是原子动作?

我正在创建许多包含多个级别的对象的UI。例如采购订单。采购订单具有有关订单本身的信息,但它还包含未指定数量的订单项,而订单项又包含特定信息。

这种UI的一个问题是应视为原子动作(即只能完全成功或完全失败的动作)。保存更改就是这样的动作。

我可以看到每个订单项都是原子的,并且在Web界面中使用Ajax技术保存了该行不再具有焦点时已更改的每个订单项。这将加快响应时间。但是,它使保存每一行都有自己的原子动作。

另一方面,保存整个订单的所有更改可以看作是原子动作。这意味着用户可以更改行并取消所有更改。此时,要么保存整个文档,要么不保存任何文档。

是否有任何有关用户界面或设计原则的研究可以帮助我解决这一难题?

11
txwikinger

最近,我不得不处理类似的问题-我展示了一个对象的配置文件,其中包含多个数据条目(名称,说明,重要性等),可以单独更改,但这些更改要等到整体按下“保存”。

我这样做的方式是:

  • 将每行显示为“标签”,即只读
  • 将鼠标悬停在上方,突出显示该行并显示“编辑”图标
  • 如果按下,则该行变为可编辑
  • 一旦失去焦点,该行将再次被读取(具有新值)
  • 现在,将鼠标悬停在上方时,我将显示一个“撤消”图标,该图标将还原为先前的值。
  • 整个个人资料卡都有一个“保存”(仅在进行更改后才会显示),从而表明在此之前没有任何保存。

我认为它为用户提供了最大的灵活性,并且非常直观。

希望这可以帮助。

9
Dan Barak

也许您应该具有多个级别的原子动作。

您可以保存每个订单项以保留用户的工作(如果您真的想花哨的话,请创建一个撤消堆栈)。但是只有在用户单击“保存”后才能输入订单。

考虑一个电子邮件客户端-基于Web的电子邮件客户端-可以自动保存草稿的电子邮件客户端。

另请参阅: 多级撤消

3
Patrick McElhaney

您可以创建多个页面(如在向导中),在这些页面上将相关项目分组。然后,使每个页面成为原子动作。

例如,提交前,一页包含订单产品,一页包含交货信息,一页包含账单详细信息,以及一页概述。

0
Jouke van der Maas