tôi có mô hình sau:Làm thế nào để loại trừ thuộc tính nhất định từ Knockoutjs toJS()
var model = {
A: 'One',
B: 'Two',
C: 'Three'
};
tôi ràng buộc các yếu tố giao diện người dùng khác nhau để các trường này, trong đó hoạt động tuyệt vời. Tuy nhiên, tôi chuyển đổi mô hình trở lại với một đối tượng JavaScript để tôi có thể lưu bất kỳ thay đổi đối với máy chủ:
var goingToServer = ko.toJS(model);
goingToServer
sẽ bao gồm các thuộc tính A, B và C. Tuy nhiên, giả sử bất động sản C là một lượng lớn dữ liệu điều đó sẽ không bao giờ thay đổi. Tôi muốn tránh việc gửi lại cho máy chủ.
Có cách nào để tạo toJS()
chỉ bao gồm một nhóm trường được xác định trước khi chuyển đổi mô hình trở lại đối tượng JavaScript?
Một điều tôi đã điều tra là Knockout Mapping plugin. Nó có một thiết lập gọi là bao gồm được ghi nhận như vậy:
Khi chuyển đổi mô hình quan điểm của bạn trở lại cho một đối tượng JS, theo mặc định các plugin lập bản đồ sẽ chỉ bao gồm tài sản mà là một phần của mô hình chế độ xem gốc , ngoại trừ nó cũng sẽ bao gồm các tài sản Knockout tạo ra ngay cả khi nó không phải là một phần của đối tượng ban đầu của bạn . Tuy nhiên, bạn có thể chọn để tùy chỉnh mảng này:
Tuy nhiên, dường plugin này không hoạt động như tài liệu, như ko.mapping.toJS()
vẫn sẽ bao gồm A, B và C, ngay cả khi tôi vượt qua trong một mảng include
của ['A', 'B']
. Tôi đoán tính năng này được dự định bao gồm các trường bổ sung không có trong mô hình ban đầu. Có cách nào để loại trừ các thuộc tính nhất định khi chuyển đổi mô hình trở lại đối tượng JavaScript, không thực hiện điều gì đó hacky chẳng hạn như tạo đối tượng và xóa thuộc tính mà tôi không muốn trước khi gửi tới máy chủ không? Không.
Điều đó không làm việc, như sau đó bạn không thể liên kết với nó chút nào. –
Bạn đã thử chưa? Vì tài liệu không đề cập đến việc bỏ qua có thể được sử dụng khi quay lại các đối tượng JS hay không. –
Vâng, tôi đã thử nó. Khi tôi 'bỏ qua' trường 'Ghi chú' và khi tôi gọi hàm applyBindings, tôi ngay lập tức nhận được ngoại lệ là trường' Ghi chú' không được tìm thấy trong mô hình. –