我正在使用热毛巾模板创建一个 SPA 项目。我有显示项目列表的列表视图,当单击项目时,它将转到详细视图。
router.mapRoute('details/:module/:id', 'viewmodels/details', 'Details', false);
详细屏幕的 URL 变为:
https://xxx/test/#/details/news/4
我的详细信息屏幕包含一个可观察数组,该数组在 details.js 激活方法上使用 AJAX 填充。
<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,当我单击 Save 按钮时:
var save = function () {
ko.utils.arrayForEach(screenDataArray(), function (sd) { alert(sd.FieldName + ":" + sd.FieldValue); });
我的问题是 FieldValue 仍然包含原始值(未更新)。
现在我点击浏览器刷新按钮。
我更改值并单击保存。
现在保存功能会提醒正确的更改值。
我会假设代码链完全相同,但我不明白为什么从列表视图重定向时它不起作用,但刷新会突然起作用。
提前感谢您的帮助。