Tôi có một hộp kiểm bị ràng buộc với một quan sát trên một mô hình xem. Tôi có một yêu cầu về cơ bản bật lên một "Bạn có chắc chắn?" lời nhắc xác nhận nếu người dùng thay đổi nó từ true thành false. Tôi đang có một thời gian khủng khiếp để tìm ra nơi tốt nhất để thực hiện thay đổi "có thể hủy". . .Loại bỏ - Hủy sự kiện thay đổi?
1) jQuery handler cho sự kiện nhấp chuột 2) ViewModel nội bộ đăng ký "beforeChange" 3) ViewModel nội bộ đăng ký (bình thường)
Trong mọi trường hợp, tôi đã bao la thích có cơ hội để hủy bỏ thay đổi hoàn toàn hơn là phản ứng với thay đổi, có khả năng hoàn nguyên về giá trị trước đó nếu cần.
Sự kiện đăng ký của Knockout có cho bạn cơ hội hủy thay đổi không? Bất kỳ cái nhìn sâu sắc sẽ được đánh giá cao. Cảm ơn!
Ồ, chúa ơi! Điều đó thật tuyệt vời. Tôi chưa bao giờ biết về stopImmediatePropagation của jQuery(). Trong khi tôi thường cố gắng tránh tham chiếu các công cụ jQuery bên ngoài khung nhìn lõiModel, đây là một giải pháp tuyệt vời cho vấn đề của tôi. Cám ơn bạn một lần nữa! – blaster
Trong trường hợp của tôi 'event.stopImmediatePropagation' không ngăn giá trị thay đổi trong ko viewModel. Tôi phải đặt lại giá trị: 'var cb = event.target; ... data.myvalue (! cb.checked); ' – Sprockincat
Thứ tự của liên kết dữ liệu là * rất * quan trọng trong trường hợp này. Nếu bạn liên kết giá trị * trước * sự kiện, giá trị ràng buộc thực hiện trước tiên. Nếu sự kiện bị ràng buộc, nó sẽ thực hiện đầu tiên và dừng quá trình truyền. Xem này fiddle để xem nó bị hỏng: http://jsfiddle.net/8AuVj/ –