1

我有来自 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 和映射插件。这是一个JSFiddle 来展示我到目前为止的尝试

我主要有两个目标

  1. 将此数据放入表中
  2. 每当故障状态更改时更新该行。每行由 ProjectName 和 Turbine 的组合唯一标识。

谢谢桑迪普。

我在尝试使用映射插件时遇到了这个声明的问题。

var viewModel = {};

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

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

ko.mapping.fromJS(data,viewModel);

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

谢谢

4

3 回答 3

1

这是工作副本。关联

代码被破坏 - 没有匹配的大括号和引用“数据”而不是 Stats。

于 2012-05-09T09:02:03.987 回答
0

看起来您有一些额外的括号和括号(在数据 json 定义之后和applyBindings之后)。除此之外,您只需将“foreach:Data”更改为“foreach:Stats”,以便您的tbody指向 viewModel 的数据。

于 2012-05-09T01:23:51.250 回答
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 映射每个数组项中的每个属性都需要是可观察的。

于 2012-05-09T11:57:24.787 回答