Поскольку мне нужно получить доступ к месяцу, дню и году на моей странице, у меня есть модель с составным объектом SplitDate.Отображение нокаутов - не хотите создавать объекты, но их необходимо сериализовать
var SplitDate = function(date) {
var _date = ko.observable(); // the backing field
this.date = ko.computed({ read: _date, write: setDate });
this.year = ko.computed({ read: makeGetter('year'), write: makeSetter('year') });
this.month = ko.computed({ read: getMonth, write: setMonth });
this.day = ko.computed({ read: makeGetter('date'), write: makeSetter('date')
// not showing setters/getters, etc.
....
});
}
На мой взгляд модель, я использую этот объект следующим образом;
self.trainingEndDate = ko.observable(new SplitDate());
Проблема у меня в том, что мне нужно, чтобы иметь возможность сопоставить новые данные из вызова Ajax несколько раз для одной и той же страницы. Я попытался разрешить Knockout Mapping создавать новый SplitDate каждый раз, но это не сработало. По-видимому, SplitDate, который был сброшен и заменен, был тем, который был привязан к странице.
Поэтому я создал сопоставление, которое игнорировало бы представления viewmodel, которые были SplitDates, а для тех, которые я просто обновляю дату существующего элемента управления.
Это работало нормально, пока мне не пришлось развернуть модель и опубликовать ее с помощью вызова ajax. Отображение нокаутов устанавливает флаг в свойствах игнорирования, поэтому они не включаются в неотобранный объект. Я использую разные параметры сопоставления, которые не «игнорируют» их, и я также попытался добавить их в опцию «включить», но это не сработало.
Почему нет явного «включения» в соответствие с неявным «игнорированием»? Должен ли я игнорировать эти объекты на карте? есть ли опция, которую я могу использовать для вызова установщика даты вместо того, чтобы игнорировать их?
Что-то впереди, но есть ли что-то, что мне нужно включить в SplitDate, чтобы убедиться, что оно правильно сериализовано после того, как я получил сопоставление, чтобы включить его?
Не могли бы вы включить код, который фактически выполняет сопоставление/сериализация/десериализация? – janfoeh