使用类似的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/
答案 0 :(得分:4)
您必须提供自定义映射以指示映射函数应如何执行此操作。我已更新了您的fiddle。
这是自定义映射,以及对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>