我有一个数据变量,其格式为嵌套数据结构
var args = JSON.stringify({ argBO: jQuery.parseJSON(ko.toJSON(self.StateModel)) });
看起来像:
{"argBO":
{ "StateId":0,
"StateName":"jjhj",
"ShortName":"jjj",
"IsActive":true,
"CountryId":8,
"errors":[],
"CountryName":"Antigua and Barbud"
}
}
如果尝试从上面获取StateName参数值,请执行以下操作:
console.log(ko.utils.parseJson(args).argBO.StateName);
正确打印“jjhj”
但是,如果我尝试通过执行以下操作为其分配新值:
ko.utils.parseJson(args).argBO.StateName= 'RAjmsd'
StateName没有更改为新的..为什么????
更新
var stateModel = {
StateId: ko.observable(0),
StateName: ko.observable('').extend({ required: true }),
ShortName: ko.observable('').extend({ required: true }),
IsActive: ko.observable(true),
CountryId: ko.observable().extend({ required: true })
}
答案 0 :(得分:0)
第二个语句创建一个新对象,然后更改该新对象的StateName
属性,但之后您不对该对象执行任何操作。
ko.utils.parseJson(args)
该代码通过解析JSON字符串来创建一个全新的对象。它与原始对象无关。
您可能会在查看代码时引用self.StateModel
(尽管显示完整的视图模型会有所帮助),因此您应该直接通过以下方式更改StateName:
self.StateName('RAjmsd');