【发布时间】: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.
【问题讨论】:
-
请用您的代码的相关部分编辑您的帖子,因为如果 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