【发布时间】:2021-08-03 04:37:44
【问题描述】:
我设置了一个 foreach 循环来遍历对象列表并将它们显示为页面上的输入字段,但在更新输入时无法获取要保存到对象的值。在我的 javascript 中:
$(function (carService, $) {
var viewModel = function () {
self = this;
self.Vehicles = ko.observableArray();
var vehicle = new Object();
vehicle.VehicleMake = ko.observable("test make");
vehicle.VehicleModel = ko.observable("test model");
self.Vehicles.push(vehicle);
}
app.carService.viewModel = new viewModel();
ko.mapping.fromJSON(settings.modelJson, {}, app.carService.viewModel);
});
我对 foreach 数据绑定循环中的值进行了数据绑定:
<div data-bind="with:app.carService.viewModel">
<div data-bind="foreach: Vehicles">
<input type="text" data-bind="value: VehicleMake, valueUpdate: 'afterkeydown'"/>
<input type="text" data-bind="value: VehicleModel, valueUpdate: 'afterkeydown'"/>
</div>
</div>
来自 javascript 对象(“test make”和“test model”)的数据显示在输入字段中,但是当这些输入发生更改时,数据不会像通常使用数据绑定一样反映回对象。
有什么想法我在这里做错了吗?
【问题讨论】:
-
原始值从何而来?如果这些值来自数据库,则在页面上放置 lsitview、repeater 甚至是 gridview - 填充它(大约需要 4 行代码),现在您的数据会呈现在页面上 - 并且这些控件会持久保存数据为您服务,包括允许用户更改/编辑值。然后,您可以循环该中继器控件并将编辑结果发送回数据库。使用服务器端控件将使您的工作在标记方面减少 5 倍 - 以及您必须编写以解决此问题的代码。
标签: javascript asp.net knockout.js