フィドル: http://jsfiddle.net/amitava82/dawkn/6/
入力要素は、サーバーから受信した json データに基づいて動的に生成されます。ここではテキスト フィールドを使用していますが、select、radio など、n個のフィールドを使用できます。さて、これらの入力要素から値を取得し、それらをそれぞれのモデル項目に関連付けてサーバーに送信できるようにする方法について混乱しています。どんな助けにも感謝します。ありがとう!
フィドル: 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.toJS
変換されます。ko.observables
持っている場合は、たとえば、newValues
それらを文字列化してサーバーに送信できます。JSON
それは多かれ少なかれ私がそれをする方法です。以下のコメントで追加の質問をしてください。