У меня есть объект, называемый purchase
который попадает в один из двух наблюдаемых массивов в зависимости от его статуса. Объект purchase
имеет наблюдаемый объект integrationStatus
который я по умолчанию присвоил имени класса css для integration-status--complete
По какой-то причине покупки в массиве Scheduled кодируются зеленым цветом, как ожидалось, но покупка в массиве Unscheduled вызывает ошибку, так как integrationStatus
не определен
заранее спасибо
Проблема связана с конфигурацией отображения в Schedule
. Отображение вызова ko.mapping.fromJS(data, { scheduleDays: scheduleDayMapping }, self)
указывает утилите только настроить отображение из scheduleDays
объекта из data
переменной.
Поскольку эта конфигурация не включает запись для unallocatedHolder
, утилита сопоставления использует поведение наблюдаемого по умолчанию, а не пользовательское поведение. Функция UnallocatedHolder
никогда не вызывается, поэтому ее массив purchases
не получает настраиваемого сопоставления. Без этого сопоставления integrationStatus
не определяется для этих покупок.
Я бы предложил определить новую конфигурацию отображения для Schedule
следующим образом:
var scheduleMapping = {
"scheduleDays": scheduleDayMapping,
"unallocatedHolder": {
create: function(options) {
return new UnallocatedHolder(options.data);
}
}
};
Затем ссылайтесь на эту новую конфигурацию сопоставления в " Schedule
", обновив линию отображения до
ko.mapping.fromJS(data, scheduleMapping, self);
viewModel
для просмотра, поэтому он не должен бытьsomeVariableNameThatHoldsPurchaceObject.integrationStatus
?Array1
,table2
, foo, bar довольно запутаны и приведут к тому, что мы сделаем предположения о вашем коде, как @Rajesh в приведенном выше комментарии. Как вы используете привязкуforeach
? Как вы «переходите» от одного массива к другому? Было бы очень легко помочь вам, если бы вы могли создать минимальную скрипку или рабочий фрагмент.