//Первоначальные данные для заполнения карточки товара
dataFirst = "...";
var Product = function(data) {
...
this.photos= ko.observableArray(data.photos);
...
};
var mapping = {
create: function(options) {
return new Product(options.data);
}
};
var viewModel = {
product: ko.mapping.fromJS(dataFirst), // Заполняем карточку товара данными
getProduct: function(id) { // Получаем данные другого товара
...
$.ajax({
...
success: function (json) {
...
var updatedData = JSON.parse(json);
ko.mapping.fromJS(updatedData, mapping, viewModel.product); // Заполняем карточку товара новыми данными
...
},
...
});
},
};
ko.applyBindings(viewModel);
Вопрос задам на примере поля photos.
Первый раз загружается товар. Этот товар не имеет значения photos поэтому
<div data-bind="if: product.photos">...</div>
ничего не показывает. Теперь по нажатию на кнопку грузится другой товар у которого есть photos, но knockout`у всё равно, он не хочет обрабатывать поле, которое изначально первый раз не было заполнено.
Если же я первый раз загружу товар с фотографиями, то потом проблем нет, есть или нет фото у товара, всё отображается верно.
Подскажите как решить эту проблему?