Я новичок в Knockout Js, я использую плагин Mapping для преобразования данных JSON, получаемых с сервера в элементы интерфейса. Я могу загрузить содержимое правильно в первый раз, однако последующие изменения данных не обновляют пользовательский интерфейс вообще.KnockOut Js Mapping Update не работает
Мой HTML файл имеет это (чей visiblilty я контролировать в сценарии)
<div id="Results" style="font-family: Tahoma,Verdana,sans-serif;font-size: 10pt; visibility: hidden" >
<form>
<h4>List of all Arguments</h4>
<ul data-bind="foreach: arguments">
<li> Argument: <span data-bind="text: argumentName"> </span>: <input data-bind="value: defValue"/> </li> </ul>
</form>
</div>
Javascript функция имеет этот код,
function displayArguments(data){
var page=document.getElementById('Results');
page.style.visibility='visible';
var viewModel = ko.mapping.fromJS(data);
ko.mapping.fromJS(data, viewModel);
if(applyBindingsInvokedAlready == 0){
// applyBindingsInvokedAlready is global default to 0
ko.applyBindings(viewModel);
applyBindingsInvokedAlready =1;
}
}
Просто хотел сказать, что я попытался следующие шаги, прежде сообщение этого вопроса
- Пробовал ko.mapping.fromJS (данные, {}, viewModel);
- Tried ko.cleanNode (document.getElementById ('Results'))
- Как описано выше, вызовите ko.applyBindings (viewModel); только один раз.
Я потерян! :(
Пожалуйста, помогите мне понять ошибку, которую я делаю здесь. Заранее спасибо!
Спасибо вам QBM5, но у меня есть проблема. My View модель содержит массив. Он может иметь любое количество элементов зависит по данным. Как я должен идти дальше в этом случае? Также, пожалуйста, помогите мне понять, почему привязка перерывов, когда мы пробуем var viewModel = ko.mapping.fromJS (данные); ko.mapping.fromJS (данные, viewModel); Если этого недостаточно, чтобы обновить viewModel и, в свою очередь, обновить интерфейс? Еще раз спасибо! – Sathya
Я обновил свой ответ – QBM5
Извинения, я не упомянул модель. Строковые данные json выглядят следующим образом: {"arguments": [{"argumentName": "a", defaultValue ":" c "}, {" argumentName ":" b "," defaultValue ":" d " }]} – Sathya