2013-03-28 29 views
6

Tôi viết thư này chỉ thị, mà sẽ đóng vai trò như thế này:lưu tự động vào mờ + "Undo" nút

  1. có thể hiệu chỉnh một số văn bản (sử dụng nội dung có thể chỉnh sửa)
  2. trên mất tập trung cần lưu giá trị của nó mô hình (được xem và lưu vào DB gần đây)
  3. phải có nút "Hoàn tác" sẽ hoàn nguyên thay đổi.

thực hiện của tôi là: http://plnkr.co/edit/DsWEYQV4j51i4GO6KjSe?p=preview

Vấn đề duy nhất tôi có là khi tôi nhấn "undo" nút, DIV mất tập trung (vì vậy sự kiện 'focusout' là bắn) và giá trị được lưu trong mô hình, vì vậy " nút hoàn tác "không thể hoàn nguyên giá trị của nó.

(Tôi bấm vào nút "undo" -> focusout sự kiện (tự động lưu) -> nhấp vào sự kiện (??? không thể trở lại))

cách giải quyết

Có thể tôi thấy: thời gian chờ

  1. bộ trên mờ và hủy nếu nút 'hoàn tác' được nhấn. Nhưng nó là xấu xí khi người dùng có thể nhập giá trị và điều hướng đến một phần khác của ứng dụng, vì vậy việc tiết kiệm thời gian chờ sẽ không chạy bất kỳ trình nghe đồng hồ $ nào.
  2. lưu giá trị trên tiêu điểm và khôi phục giá trị khi nút 'hoàn tác' được lưu. Điều này gây ra một vấn đề khác: $ nghe người xem sẽ chạy với giá trị thay đổi và sau đó chạy lại với giá trị trước đó (do đó sẽ có 2 ghi vào DB thay vì một)

Có ai có giải pháp cho hành vi như vậy (autosave on blur) + undobutton)?

+1

Tôi nghĩ bạn sẽ phải sống với hai DB write (workaround # 2). Vì bạn không thể biết liệu người dùng có nhấn 'Hoàn tác' hay không, trước tiên bạn phải lưu giá trị đã thay đổi, nếu bạn cần hành vi tự động lưu. Hy vọng rằng, các hoạt động hoàn tác sẽ rất hiếm, và do đó DB sẽ tăng gấp đôi. –

+0

Bạn có thấy điều này không ?? http://stackoverflow.com/questions/13320015/how-to-write-a-debounce-service-in-angularjs Có thể giúp bạn với chức năng tự động lưu –

Trả lời

1

Làm thế nào về việc sử dụng chức năng gỡ lỗi underscore.js hoặc tương tự như gây ra sự chậm trễ khi tự động lưu, tại đó nó sẽ kiểm tra cờ hoàn tác và hủy? Không chắc chắn những gì người nghe $ xem đang làm. Tất nhiên nó sẽ vẫn không hoạt động nếu người dùng hoàn toàn thoát khỏi ứng dụng hoặc làm mới trang, v.v.

Các vấn đề liên quan