Knockout Mapping Plugin用于在表格中显示数据

时间:2012-05-08 22:15:51

标签: knockout.js knockout-mapping-plugin

我的数据来自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 NameTurbineFaultDescription

我正在使用Knockout.js和mapping plugin。这是一个JSFiddle to show what I tried so far

我主要有两个目标

  1. 将此数据放入表格
  2. 每当故障状态发生变化时更新行。每一行都由ProjectName和Turbine组合唯一标识。

  3. 谢谢Sandeep。

    我在尝试使用映射插件的语句中遇到问题。

    var viewModel = {};

    viewModel.Stats = ko.mapping.fromJS(data);

    你能告诉我我做错了吗?此外,当我收到数据更新时,以下语句是否有效?

    ko.mapping.fromJS(data,viewModel);

    由于映射插件不起作用,我不得不使用ko.utils.Arraymap函数。

    由于

3 个答案:

答案 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映射每个数组项中的每个属性都需要是一个可观察的。