我正在使用knockout mapping插件从具有内部数组的数据创建一个viewmodel。 我可以正确加载html并在我的viewmodel中获取添加和删除函数以进行DOM所需的更改。但是当我尝试使用stringifyJson保存更改时,字符串是未定义的。
var viewModel = {
groupItem: ko.observableArray(),
add: function() {
this.scheduleitems.push({
time: ko.observable("03:00"),
LL: ko.observable(""),
L: ko.observable(""),
H: ko.observable(""),
HH: ko.observable("")
});
},
remove: function(item,parent) {
parent.scheduleitems.remove(item);
},
save: function() {
var data = ko.utils.stringifyJson(this.groupItem);
console.log(data);
}
};
var data3 = [
{
"title": "P1 Alarms",
"id": "dadas-sadf-asdf-asd",
"behaviouritems": [
{"title": "GPRS","LL": true,"L": false,"H": true,"HH": false},
{"title": "SMS","LL": false,"L": false,"H": false,"HH": true},
{"title": "Software","LL": false,"L": false,"H": true,"HH": false}
],
"scheduleitems": [
{"time": "00:00","LL": false,"L": false,"H": false,"HH": true},
{"time": "02:00","LL": true,"L": false,"H": false,"HH": false}
]
}]
ko.mapping.fromJS(data3, null, viewModel.groupItem);
console.log(viewModel.groupItem);
ko.applyBindings(viewModel, document.getElementById("customerDiv"));
这是一个问题的小提琴: http://jsfiddle.net/davidoleary/q2BSZ/
答案 0 :(得分:0)
担心这是一个错误,我不应该使用stringifyJson。如果我使用以下任一项,我发现我得到了预期的结果,包括通过UI进行的所有更改。
var result = ko.mapping.toJS(this);
console.log(result );
var jsonResult = ko.mapping.toJSON(this);
console.log(jsonResult);