我的数据来自JSON:
[
{"ProjectName":"Region1.Site1","Turbine":"T1","Fault":0,"Description":"No Fault"},
{"ProjectName":"Region1.Site1","Turbine":"T2","Fault":0,"Description":"No Fault"},
{"ProjectName":"Region1.Site1","Turbine":"T3","Fault":1,"Description":"In Alarm"},
{"ProjectName":"Region1.Site1","Turbine":"T4","Fault":1,"Description":"In Alarm"},
{"ProjectName":"Region1.Site2","Turbine":"T1","Fault":0,"Description":"No Fault"},
{"ProjectName":"Region1.Site2","Turbine":"T2","Fault":0,"Description":"No Fault"},
{"ProjectName":"Region1.Site2","Turbine":"T3","Fault":1,"Description":"In Alarm"},
{"ProjectName":"Region1.Site2","Turbine":"T4","Fault":1,"Description":"In Alarm"}
]
我想将此数据显示在一个表格中,表格标题为Project Name
,Turbine
,Fault
,Description
。
我正在使用Knockout.js和mapping plugin。这是一个JSFiddle to show what I tried so far。
我主要有两个目标
谢谢Sandeep。
我在尝试使用映射插件的语句中遇到问题。
var viewModel = {};
viewModel.Stats = ko.mapping.fromJS(data);
ko.mapping.fromJS(data,viewModel);
由于映射插件不起作用,我不得不使用ko.utils.Arraymap函数。
由于
答案 0 :(得分:1)
这是工作副本。 Link
代码被破坏 - 没有匹配的大括号和对“数据”的引用而不是统计数据。
答案 1 :(得分:0)
看起来你有一些额外的括号和括号(在你的数据json定义之后和 applyBindings 之后)。除此之外,您只需将“foreach:Data”更改为“foreach:Stats”,以便 tbody 指向viewModel的数据。
答案 2 :(得分:0)
这是我正在做的事情的一个例子,实际上是同样的事情:
var UserRecord = function (data) {
ko.mapping.fromJS(data, {}, this);
};
var mapping = {
key: function (data) {
return ko.utils.unwrapObservable(data.Id);
},
create: function (options) {
return new UserRecord(options.data);
}
};
function UserListViewModel() {
this.users = ko.mapping.fromJS(data, mapping)
}
它不工作的原因是因为你有一个数组,你必须告诉KO映射每个数组项中的每个属性都需要是一个可观察的。