【问题标题】:How to bind input values in a foreach loop on knockout如何在敲除时在 foreach 循环中绑定输入值
【发布时间】: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 对象(“t​​est make”和“test model”)的数据显示在输入字段中,但是当这些输入发生更改时,数据不会像通常使用数据绑定一样反映回对象。

有什么想法我在这里做错了吗?

【问题讨论】:

  • 原始值从何而来?如果这些值来自数据库,则在页面上放置 lsitview、repeater 甚至是 gridview - 填充它(大约需要 4 行代码),现在您的数据会呈现在页面上 - 并且这些控件会持久保存数据为您服务,包括允许用户更改/编辑值。然后,您可以循环该中继器控件并将编辑结果发送回数据库。使用服务器端控件将使您的工作在标记方面减少 5 倍 - 以及您必须编写以解决此问题的代码。

标签: javascript asp.net knockout.js


【解决方案1】:
  • 试试改成TextInput,淘汰推荐TextInput两个 绑定值绑定,

  • 还要确保您绑定到 observable 而不是 输入元素的值

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-09
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 2015-06-05
    • 2014-12-28
    • 1970-01-01
    相关资源
    最近更新 更多