У меня есть модель с наблюдаемым и наблюдаемым массивом. Щелчок на кнопке означает, что для заполнения объекта JSON и сопоставления его с моделью просмотра ..., который, я считаю, должен «заполнить» наблюдаемый массив. Нажатие кнопки происходит. Нет ошибок. Если я пройду через отладчик, когда происходит сопоставление, то наследуемый объект заселяется, но obserableArray этого не делает. Это означает, что объекты HTML, которые предполагается отображать на основе наблюдаемого массива, не обновляются.Нокаут maping.fromJS для наблюдаемого массива из объекта json. Данные теряются
HTML:
<div data-bind="if: ErrorMessages().length"> <span>Error Messages</span>
<ul data-bind="foreach: ErrorMessages">
<li> <span data-bind="text: Description"></span>
</li>
</ul>
</div>
<button data-bind="click: ShowErrors">Go</button>
var ViewModel = function() {
var me = this;
me.AData = ko.observable();
me.ErrorMessages = ko.observableArray([]);
Javascript:
me.ShowErrors = function() {
var testdata = {
AData: {
Something: 1
},
ErrorMessages: [{
Description: 'Error #1',
Code: '01'
}, {
Description: 'Error #2',
Code: '02'
}]
};
var jsonData = ko.toJSON(testdata);
ko.mapping.fromJS(jsonData, {}, me);
};
};
ko.applyBindings(new ViewModel());
http://jsfiddle.net/Eves/v9SEk/4/
Мой реальный код протягивается и получает данные из веб-службы. Я считаю, что создание объекта и преобразование его в JSON, а затем его отображение с помощью ko.mapping.fromJS лучше всего отражает то, что происходит. Anyways ...
Я подозреваю, что я сделал что-то глупое или, по крайней мере, принял то, что я не должен был иметь.
ko.mapping.js не найден в ваших внешних ресурсах, поэтому THAT не работает –
knockout.mapping.js находится в jsfiddle "External Resources". Разве это не так? – Eves
LOL ... какая ужасная копия и вставка работы я сделал. Внешние ресурсы должны быть исправлены в настоящее время. Однако проблема все еще существует – Eves