1
小提琴:從服務器接收http://jsfiddle.net/amitava82/dawkn/6/在knockoutJS獲得從動態生成的輸入值
輸入元件將被動態地生成基於JSON數據。在這裏,我使用文本字段,但它可以是選擇,廣播等和n他們的數量。現在,我很困惑如何從這些輸入元素獲取值,並將它們與各自的模型項目相關聯,以便我可以將它們發送到服務器。感謝任何幫助。謝謝!
小提琴:從服務器接收http://jsfiddle.net/amitava82/dawkn/6/在knockoutJS獲得從動態生成的輸入值
輸入元件將被動態地生成基於JSON數據。在這裏,我使用文本字段,但它可以是選擇,廣播等和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
將它們串聯起來,並將它們發送到服務器。
這或多或少是我會這樣做的。隨意在下面的評論中提出其他問題。
非常好!非常感謝您的詳細解決方案!很棒的作品。我已經添加了另一個用於自動映射DataModel屬性的循環。 – SamSerious