Я создаю проект SPA с использованием шаблона Hot Towel. У меня есть просмотр списка, который показывает список элементов, и когда элемент щелкнут, он перейдет к подробному представлению.Hot Towel - Knockout binding not update observablearray
router.mapRoute('details/:module/:id', 'viewmodels/details', 'Details', false);
URL-адрес на экране деталь становится:
https://xxx/test/#/details/news/4
Мой экран деталь содержит наблюдаемый массив, который заполняется с использованием AJAX от способа активации details.js.
<button class="btn btn-info"
data-bind="click: save">
<i class="icon-save"></i>Save</button>
<form id="myform" data-bind="submit: submitForm">
<table>
<tbody data-bind="foreach: screenDataArray">
<tr>
<td data-bind="text: FieldLabel"></td>
<td>
<input data-bind="value: FieldValue" />
</td>
</tr>
</tbody>
</table>
</form>
В поле FieldLable и FieldValue нет проблем, предполагая, что это означает, что привязка данных действительно правильная.
изменить FieldValue и когда я нажимаю на кнопку Сохранить:
var save = function() {
ko.utils.arrayForEach(screenDataArray(), function (sd) { alert(sd.FieldName + ":" + sd.FieldValue); });
Моя проблема заключается в том, что FieldValue все еще содержит исходные значения (не обновляются).
Теперь я нажимаю кнопку обновления браузера.
Я изменяю значение и нажимаю на сохранение.
Теперь функция сохранения предупреждает правильные измененные значения.
Я бы предположил, что цепочка кода точно такая же, но я не понимаю, почему при перенаправлении из списка это не работает, но обновление внезапно срабатывает.
Спасибо за вашу помощь заранее.
Спасибо за ответ, однако он не объясняет, почему, когда я обновляю экран (т. Е. Перейдя непосредственно к представлению деталей, а не через представление списка), он правильно отображает значения на экране. –