1

使用这样的 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/

4

1 回答 1

4

您必须提供自定义映射以向映射函数指示它应该如何做。我已经更新了你的小提琴

这是自定义映射,以及对 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>
于 2013-05-03T13:32:08.297 回答