【问题标题】:Knockout map nested JSON array淘汰赛地图嵌套 JSON 数组
【发布时间】:2013-08-07 05:28:21
【问题描述】:

我试图制作一个表格格式的淘汰赛映射 JSON 模式编辑器。我成功映射了 json 对象,但问题是我在处理 json 数组时。

代码

var l_Model;
//Create model
l_Model = function(l_data) {
    var self = this;
    //map data from json as observables
    ko.mapping.fromJS(l_data, {}, self);
    //observable to get equation from json
    self.Eqn = ko.observable(null);
};
//view model mapping to html 
var viewModelMapping = {
    'dataModel': {
        create: function(options) {
            return new l_Model(options.data);
        }
    }
};
var vm = ko.mapping.fromJS(Data);

只要有数据,这段代码就可以工作

data = {}

但是当我处理 json 对象数组时,我无法映射它

data =[{},{},{},.....]

我在控制台中遇到错误

Uncaught ReferenceError: Unable to parse bindings.

JS Fiddle

【问题讨论】:

  • 请用您的代码的相关部分编辑您的帖子,因为如果 JSFiddle 出现故障,没人能理解您的问题!
  • 您的问题现在看起来好多了,但对于试图解决您的问题的人来说,它仍然没有包含足够的细节。另一方面,您的小提琴包含的东西太多了。请尝试将您的问题减少到绝对最低限度,因为您当前的小提琴包含太多太乱的代码。如果没有大量的简化,我怀疑有人会尝试阅读/理解并帮助您解决问题。对于初学者而不是直接包含映射插件,您可以从 cdnjs.com 引用它。
  • 更新了jsfiddle中的代码
  • jsFiddle 更新为不使用内联映射插件
  • 我认为你的问题是 getFullKey 函数,当然还有你在两个嵌套的 foreach 循环中的基本映射。例如,如果我添加:l_row += "<td class='seRow'><span data-bind='text: $root[" + index + "]." + key + "'/><textarea rows='1' data-bind='value: $root[" + index + "]." + key + "' /></td>"; 第一行将显示正确的值

标签: jquery json knockout.js nested knockout-mapping-plugin


【解决方案1】:

您可以从数组的根映射您的对象并处理每个项目和分离的对象。您甚至可以在您的对象中使用另一个映射器并继续使用嵌套映射器处理数据

       //mapper method
       mapCollection = {
            '': {
                create: function (options) {
                    return new objectWithAnotherMapper(options.data);
                }
            }
        },

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-08
    • 1970-01-01
    • 2014-12-11
    • 2011-08-11
    • 2013-05-31
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    相关资源
    最近更新 更多