【问题标题】:knockout mappins for children arrays儿童数组的淘汰赛映射
【发布时间】:2012-09-12 07:59:00
【问题描述】:

我正在尝试使用 knockoutjs 和以下数据源创建级联下拉列表:

[{"$id":"1",
  "Id":1,
  "Name":"Nikon",
  "Cameras":[{
       "$id":"2",
       "Id":1,
       "Name":"D90"},
      {"$id":"3",
       "Id":2,
       "Name":"D5100"},
      {"$id":"4",
       "Id":3,
       "Name":"D700"}]},
 {"$id":"5",
  "Id":2,
  "Name":"Canon",
  "Cameras":[{
       "$id":"6",
       "Id":4,
       "Name":"550D"},
      {"$id":"7",
       "Id":5,
       "Name":"600D"},
      {"$id":"8",
       "Id":6,
       "Name":"650D"}]},
 {"$id":"9",
  "Id":3,
  "Name":"Sony",
  "Cameras":[]},
 {"$id":"10",
  "Id":4,
  "Name":"Pentax",
  "Cameras":[]},
 {"$id":"11",
  "Id":5,
  "Name":"Olympus",
  "Cameras":[]},
 {"$id":"12",
  "Id":6,
  "Name":"Panasonic",
  "Cameras":[]},
 {"$id":"13",
   "Id":7,
   "Name":"Leica",
   "Cameras":[]}]

我尝试使用 knockoutjs 的映射插件将此 json 映射到我的公司对象:

$.getJSON(url, function (data) {
      $.each(data, function () {
        companies.push(ko.mapping.fromJS(this));
      });
});

但似乎没有映射 Cameras 数组。你能告诉我为什么会这样吗?谢谢。

【问题讨论】:

    标签: knockout.js knockout-mapping-plugin


    【解决方案1】:

    使用 companies 作为键将您的列表包装在一个对象中应该可以使您的代码正常工作。

    var Model = function () {
       this.companies= ko.observableArray();        
    };
    var model = new Model();
    ko.applyBindings(model);
    ko.mapping.fromJS({companies: data}, mappingOptions, model);
    

    查看fiddle(更改输入框中的值表明已映射相机数组)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-08
      • 1970-01-01
      • 2012-12-05
      • 2015-03-30
      • 2017-07-07
      • 2013-07-21
      • 2012-10-10
      相关资源
      最近更新 更多