1

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

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

4

1 回答 1

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

这或多或少是我会这样做的。随时在下面的评论中提出其他问题。

于 2012-07-03T05:55:35.007 回答