繁体   English   中英

从敲除JS动态生成的输入中获取值

[英]get values from dynamically generated inputs in knockoutJS

小提琴: http : //jsfiddle.net/amitava82/dawkn/6/

输入元素将基于从服务器接收的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) {}
}

我已添加for因此您可以执行以下操作:

new DataModel({
    "Id": 12,
    "DisplayName": "Rad Accept Time Out",
    "ValueDisplayType": 0
});

现在,当您创建viewModel您可以执行以下操作:

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);

在模板中,您可以使用以下命令:

<script id="displayTmpl" type="text/html">
    <input type="text" data-bind="value: $data.Value" />
</script>

最后在save方法中:

self.save = function(){
    var newValues = ko.toJS(self.models);
    console.log(newValue);
}

函数ko.toJSko.observables转换为其值。 如果有newValues则可以使用JSON将其字符串化,例如将其发送到服务器。

这或多或少是我的方式。 请随时在下面的评论中提出其他问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM