KnockOut JS - плагин ko.mapping
//Первоначальные данные для заполнения карточки товара 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`у всё равно, он не хочет обрабатывать поле, которое изначально первый раз не было заполнено. Если же я первый раз загружу товар с фотографиями, то потом проблем нет, есть или нет фото у товара, всё отображается верно. Подскажите как решить эту проблему?:help: |
Часовой пояс GMT +3, время: 07:55. |