小提琴:http://jsfiddle.net/amitava82/dawkn/6/
将根据从服务器接收的json数据动态生成输入元素。这里我使用的是文本字段,但它可以是选择,无线电等,以及 n 的数量。现在,我很困惑如何从这些输入元素中获取值,并将它们与各自的模型项相关联,以便我可以将它们发送到服务器。感谢任何帮助。谢谢!
答案 0 :(得分:0)
您需要为每个数据定义自定义模型。例如:
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.toJS
将ko.observables
转换为其值。如果您有newValues
,那么您可以使用JSON
对它们进行字符串化,然后将它们发送到服务器。
我或多或少会这样做。请在下面的评论中随意提出其他问题。