Скажем, у меня есть эти данные:Использование Нокаут отображение плагина на объектах с детьми
var data = {
name: 'Graham',
children: [
{ id : 1, name : 'Lisa' }
]
}
Теперь я отобразить его, добавить некоторые свойства и сопоставить его обратно:
var mappedData = ko.mapping.fromJS(data);
mappedData.age = 44;
mappedData.children[0].age = 12;
var unmappedData = ko.mapping.toJS(mappedData);
В корне unmappedData объекта, возраста нет, но в дочернем объекте это так. Это связано с тем, что плагин сопоставления отслеживает исходные свойства, но только для корневого объекта.
Есть ли способ, помимо использования пользовательского сопоставления «создать» для каждой дочерней коллекции от корня, чтобы включить отслеживание для дочерних объектов коллекции?
Итак, вы хотите, чтобы на 'unmappedData.children [0] .age' не было 12? Или вы хотите, чтобы 'unmappedData.age' был равен 44? – nemesv
В объекте unmappedData я хочу, чтобы возраст не отображался. И для корневого объекта, и для детей. – RolandG
Тогда, вероятно, ваш единственный жизнеспособный вариант - использовать пользовательское сопоставление 'create' для каждой дочерней коллекции ... но вы можете сгенерировать конфигурацию отображения с помощью метода' ko.mapping.visitModel': http://jsfiddle.net/2AR75/ – nemesv