我有一个这样的状态模型:
var stateModel = {
StateId: ko.observable(0),
StateName: ko.observable('').extend({ required: true }).extend({ pattern: { message: 'Enter only Text', params: '^[a-zA-Z ]*$'} }),
ShortName: ko.observable('')
.extend({ required: true })
.extend({ pattern:
{ message: 'Enter only Text', params: '^[a-zA-Z ]*$'}
}),
IsActive: ko.observable(true),
CountryId: ko.observable().extend({ required: true })
}
我通过以下方式转换为json字符串来发布它:
var args=JSON.stringify({argBO: jQuery.parseJSON(ko.toJSON(self.StateModel))});
之后我想将它推送到我的可观察数组StateList(),所以我将它转换为对象并推送它像:
var model = jQuery.parseJSON(ko.toJSON(self.StateModel));
self.StatesList.push(model);
我的args看起来像这样:
{"argBO":
{ "StateId":0,
"StateName":"jjhj",
"ShortName":"jjj",
"IsActive":true,
"CountryId":8,
"errors":[],
"CountryName":"Antigua and Barbud"
}
}
如果我可以从上面移除argBO,我可以直接推动arg' args'而不是self.StateModel,再次通过将args转换为对象。
self.StatesList.Push(args);
我试过这样:
jQuery.parseJSON(args(jQuery.parseJSON(argBO)))
jQuery.parseJSON(args(jQuery.parseJSON[argBO]))
jQuery.parseJSON(args[argBO]))
但是没有人工作,请任何人告诉我!!
答案 0 :(得分:0)
你可以试试这个:
var JSONargs = jQuery.parseJSON(ko.toJSON(self.StateModel));
如果您使用knockout.mapping.js插件,则为:
var JSONargs = ko.mapping.toJS(self.StateModel);
如果您想发布它,可以执行以下操作:
$.ajax({data: JSON.stringify({ argBO: JSONargs });
然后你的推动就像
self.StatesList.Push(JSONargs);