Javascript 从knockoutJS中动态生成的输入获取值

Javascript 从knockoutJS中动态生成的输入获取值,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,小提琴: 输入元素将根据从服务器接收的json数据动态生成。这里我使用的是文本字段,但它可以是select、radio等,还有n个。现在,我很困惑如何从这些输入元素中获取值,并将它们与相应的模型项相关联,以便将它们发送到服务器。谢谢你的帮助。谢谢 您需要为每个数据定义自定义模型。例如: function DataModel(opts) { var self = this; self.Id = ko.observable(); self.DisplayName = ko.o

小提琴:


输入元素将根据从服务器接收的json数据动态生成。这里我使用的是文本字段,但它可以是select、radio等,还有n个。现在,我很困惑如何从这些输入元素中获取值,并将它们与相应的模型项相关联,以便将它们发送到服务器。谢谢你的帮助。谢谢

您需要为每个数据定义自定义模型。例如:

function DataModel(opts) {
    var self = this;
    self.Id = ko.observable();
    self.DisplayName = ko.observable();
    self.ValueDisplayType = ko.observable();
    self.Value = ko.observable();
    for (var i in opts)
        try{ self[i](opts[i]); } catch(e) {}
}
我为添加了
,因此您可以执行以下操作:

new DataModel({
    "Id": 12,
    "DisplayName": "Rad Accept Time Out",
    "ValueDisplayType": 0
});
var l = data1.length, parsed_data = [];
for (var i = 0; i < l; i++)
    parsed_data.push( new DataModel(data1[i]) );
self.models = ko.observableArray(parsed_data);
现在,当您创建
viewModel
时,可以执行以下操作:

new DataModel({
    "Id": 12,
    "DisplayName": "Rad Accept Time Out",
    "ValueDisplayType": 0
});
var l = data1.length, parsed_data = [];
for (var i = 0; i < l; i++)
    parsed_data.push( new DataModel(data1[i]) );
self.models = ko.observableArray(parsed_data);
函数
ko.toJS
ko.observables
转换为其值。当您拥有
newValues
时,您可以使用
JSON
对其进行字符串化,并将其发送到服务器


我差不多就是这么做的。请在下面的评论中自由提问。

太好了!非常感谢您提供的详细解决方案!工作很好。我添加了另一个for循环,用于自动映射数据模型属性。