使用这样的JSON:
JSON字符串
{
"SelectedOption" : {},
"Options" : [
{ "ID": 0, "Name": "Zero" },
{ "ID": 1, "Name": "One" }
]
}
问题是:我怎么能告诉映射插件,SelectedOption
属性是一个ko.observable?
客户端代码
var _json = '{
"SelectedOption" : {},
"Options" : [
{ "ID": 0, "Name": "Zero" },
{ "ID": 1, "Name": "One" }
]
}';
var viewModel = ko.mapping.fromJSON(_json);
ko.applyBindings(viewModel);
我写了一个jsfiddle来说明这个问题http://jsfiddle.net/BvVce/3/ 您必须提供一个自定义映射来指示映射函数应该如何做。我已经更新了你的小提琴。
下面是自定义映射,以及更改后的ko.mapping调用:
var mapping = {
'SelectedOption': {
create: function(options) {
return ko.observable(options.data);
}
}
}
var viewModel = ko.mapping.fromJSON(_json, mapping);
然后,在你的HTML,你必须添加"()"字符SelectedOption
因为它现在是一个可观察的,像这样:
<span data-bind="text: SelectedOption().ID"></span>