如何使用KnockoutJS和映射插件观察子对象



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

相关内容

  • 没有找到相关文章

最新更新