我正在写指令,它将像这样:
- 允许编辑一些文本(使用内容可编辑)
- 在失去焦点时,它应该将其价值保存到模型(最近观看并保存到数据库)
- 应该有一个“撤消”按钮可以恢复更改。
我的实现是:http ://plnkr.co/edit/DsWEYQV4j51i4GO6KjSe?p=preview
我唯一的问题是当我按下“撤消”按钮时,DIV 失去焦点(因此触发了“focusout”事件)并且值保存在模型中,因此“撤消”按钮无法恢复其值。
(我单击“撤消”-> 聚焦事件(自动保存)-> 单击事件(???无法还原))
我看到的可能的解决方法:
- 设置模糊超时并在按下“撤消”按钮时取消它。但这很丑,因为用户可以输入值并导航到应用程序的其他部分,因此超时保存不会运行任何 $watch 侦听器。
- 保存焦点上的值并在保存“撤消”按钮时恢复它。这会导致另一个问题:$watch 侦听器将以更改的值运行,然后以以前的值再次运行(因此将有 2 次写入 DB 而不是 1 次)
有没有人有这种行为的解决方案(模糊+撤消按钮自动保存)?