У меня есть следующая модель:
var model = {
A: 'One',
B: 'Two',
C: 'Three'
};
Я связываю различные элементы интерфейса с этими полями, что отлично работает. Тем не менее, я преобразовываю модель обратно в объект JavaScript, чтобы сохранить любые изменения на сервере:
var goingToServer = ko.toJS(model);
goingToServer
будет включать свойства A, B и C. Однако пусть свойство C является огромным куском данных, которые никогда не изменятся. Я бы хотел, чтобы вы не отправили это обратно на сервер.
Есть ли способ сделать toJS()
включать только предопределенный набор полей при преобразовании модели обратно в объект JavaScript?
Одна вещь, которую я изучал, - это плагин для нокаута. Он имеет параметр, называемый include, который документирован как таковой:
При преобразовании вашей модели представления обратно в объект JS по умолчанию плагин отображения будет включать только свойства, которые были частью вашего оригинальной модели представления, за исключением того, что она также будет включать Созданное нокаутом свойство _destroy, даже если оно не было частью вашего оригинальный объект. Однако вы можете настроить этот массив:
Однако, похоже, этот плагин не работает так, как описано в документе, поскольку ko.mapping.toJS()
будет по-прежнему включать A, B и C, даже если я передаю массив include
['A', 'B']
. Я предполагаю, что эта функция предназначена для включения дополнительных полей, которые не были в исходной модели.
Есть ли способ исключить определенные свойства при преобразовании модели обратно в объект JavaScript, если не сделать что-то взломанное, например, создать объект и вручную удалить свойства, которые я не хочу перед отправкой на сервер?