Cách tốt nhất để sao chép các đối tượng quan sát được trong Knockout để tạo ra loại cơ chế giao dịch là gì?
Ví dụ chỉnh sửa mô hình này:
Cách tốt nhất để nhân bản các quan sát?
var Action = function (name, ownerType, condition, expression, args) {
var self = this;
this.name = ko.observable(name);
this.ownerType = ko.observable(ownerType);
this.condition = ko.observable(condition);
this.expression = ko.observable(expression);
this.args = ko.observable(args);
};
Tôi muốn lưu trạng thái của đối tượng đó trước khi sử dụng sẽ chỉnh sửa nó. Và nếu người dùng sẽ hủy chỉnh sửa - trạng thái đối tượng cuộn ngược.
đơn giản nhất cách chỉ là tạo ra một dự án như:
self.tempAction = new Action(action.name(), action.ownerType(), action.condition(), action.expression(), action.args());
Nhưng tôi không chắc chắn rằng đó là giải pháp thanh lịch ..
Vì vậy, bất kỳ ý tưởng?
Bạn có thể không chỉ sử dụng plugin ko.mapping để ánh xạ từ đối tượng nguồn gốc đến đối tượng đích mới không? – jaffa
@jaffa - vâng, plugin ánh xạ sẽ là một tùy chọn phù hợp. Tuy nhiên nó có thể là quá mức cần thiết cho các nhu cầu tầm thường. Ngoài ra, tôi đã tìm thấy hàm 'extendObservable' khá hữu ích trong các tình huống mà plugin bản đồ không cần ứng dụng rộng. – ericb
Cách này hoạt động với các giá trị ko.computed? Tôi sẽ nghĩ rằng bằng cách sử dụng toJSON và JSON.parse để sao chép một đối tượng sẽ mất tất cả các giá trị tính toán của nó. –