自动保持模糊+“撤消”按钮

时间:2013-03-28 17:16:32

标签: angularjs angularjs-directive

我正在写指令,这将是这样的:

  1. 允许编辑某些文字(使用可编辑的内容)
  2. 在失去焦点时,它应该将其值保存到模型(最近观看并保存到数据库)
  3. 应该有一个“撤消”按钮,可以恢复更改。
  4. 我的实施是:http://plnkr.co/edit/DsWEYQV4j51i4GO6KjSe?p=preview

    我遇到的唯一问题是当我按下“撤消”按钮时,DIV失去焦点(因此'焦点'事件被触发)并且值被保存在模型中,因此“撤消”按钮无法恢复其值。

    (我点击“撤消” - >焦点事件(自动保存) - >点击事件(???无法恢复))

    我看到可能的解决方法:

    1. 在模糊时设置超时,如果按下“撤消”按钮则取消它。但它很丑陋,因为用户可以输入值并导航到应用程序的其他部分,因此定时保存不会运行任何$ watch监听器。
    2. 保存focusin上的值,并在保存“撤消”按钮时将其恢复。这会导致另一个问题:$ watch侦听器将以更改的值运行,然后再次使用之前的值运行(因此将有2次写入DB而不是一次)
    3. 有没有人有这种行为的解决方案(自动保存模糊+取消按钮)?

1 个答案:

答案 0 :(得分:1)

如何使用underscore.js去抖功能或类似功能导致自动保存延迟,它将检查撤消标志并取消?不确定$ watch听众正在做什么。当然,如果用户完全退出应用程序或刷新页面等,它仍然无效。