如何在敲除时在 foreach 循环中绑定输入值
Posted
技术标签:
【中文标题】如何在敲除时在 foreach 循环中绑定输入值【英文标题】:How to bind input values in a foreach loop on knockout 【发布时间】: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 倍 - 以及您必须编写以解决此问题的代码。 【参考方案1】:试试改成TextInput,淘汰推荐TextInput两个 绑定值绑定,
还要确保您绑定到 observable 而不是 输入元素的值
【讨论】:
以上是关于如何在敲除时在 foreach 循环中绑定输入值的主要内容,如果未能解决你的问题,请参考以下文章