2011-05-11 16 views
5

Tôi đang xây dựng một RIA chuyên sâu về dữ liệu bằng cách sử dụng backbone.js. Kế hoạch đầu tiên của tôi là có các nút "Lưu" và "Hủy" trên giao diện người dùng của tôi và chỉ lưu các mô hình của tôi thành các khối lớn bất cứ khi nào người dùng truy cập lưu. Việc hủy bỏ sẽ chỉ đơn giản là tải lại mô hình từ máy chủ. Bằng cách này, người dùng không cần phải lo lắng về những sai lầm không thể đảo ngược. Tuy nhiên, bây giờ tôi nhận ra rằng việc triển khai hoàn tác/làm lại có thể sẽ không quá khó khăn khi "xem" các thay đổi trên mô hình dễ dàng như thế nào và có chế độ xem tự cập nhật chính xác khi hoàn nguyên giá trị mô hình. Nếu tôi đã hoàn tác/làm lại, tôi sẽ chọn để các mô hình của mình lưu vào máy chủ ngay lập tức."Tự động lưu lại bằng cách hoàn tác/làm lại" và "Lưu/Hoàn nguyên nút" khi sử dụng backbone.js

Là một trong hai phương pháp được ưu tiên bởi xương sống? Một cách tốt để thực hiện hoàn tác/làm lại bằng cách sử dụng phong cách xương sống của MVC là gì?

Trả lời

5

Bạn đã chờ đợi một thời gian cho câu trả lời này, có thể bạn đã trả lời nó rồi. Tôi không có mã, nhưng một vài khái niệm đánh tôi trên đỉnh đầu.

Từ mức cao, tôi sẽ có một mô hình cơ sở có thể hoàn tác - hoặc có thể bạn có thể sử dụng một số hình thức mixin để cung cấp cho một mô hình khả năng hoàn tác. Việc thực hiện hoàn tác sẽ sử dụng mẫu lệnh để tạo thành một hoàn tác đa cấp 'ngăn xếp'.

Nếu tôi đang thực hiện điều này, tôi nghĩ rằng tôi có thể trang bị một mô hình có thể hoàn tác với bộ sưu tập mô hình lệnh backbone.js. Các mô hình lệnh này sẽ đóng gói các thay đổi đối với mô hình có thể hoàn tác và sẽ được tạo cùng với sự kiện thay đổi từ mô hình. Để hoàn tác thay đổi đối với mô hình có thể hoàn tác, bạn sẽ bật lệnh trên cùng và áp dụng lệnh hoàn tác của nó cho mô hình có thể hoàn tác. Làm mới máy chủ sẽ xóa bộ sưu tập lệnh.

Một biến chứng cho tất cả điều này là cách quản lý thông qua các thay đổi xảy ra do hoàn tác - bản thân chúng không được tạo lệnh hoàn tác ở đầu ngăn xếp.

Hy vọng điều này sẽ hữu ích.

+0

Bạn có thể vui lòng cung cấp mã ví dụ không? –

+0

Xin lỗi, tôi đã trả lời câu hỏi này hơn hai năm trước khi tôi đang sử dụng backbone.js cho một dự án. Tôi đã thực sự không bao giờ quay trở lại backbone.js kể từ đó, vì vậy tôi sẽ không tin tưởng bất kỳ ví dụ mà tôi sẽ không cobble với nhau. –