Knockout.js 敲除映射插件,用于在表中显示数据

Knockout.js 敲除映射插件,用于在表中显示数据,knockout.js,knockout-mapping-plugin,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,"D

我有来自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"}
]
我想将此数据显示到一个表格中,表格标题为
项目名称
涡轮机
故障
说明

我正在使用Knockout.js和。这是一个例子

我主要有两个目标

  • 把这些数据放到表中
  • 每当故障状态更改时,更新行。每行通过ProjectName和Turbine的组合进行唯一标识

  • 谢谢Sandeep

    我在尝试使用映射插件时遇到了问题

    var viewModel={}

    viewModel.Stats=ko.mapping.fromJS(数据)

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

    ko.mapping.fromJS(数据,视图模型)

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


    谢谢

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

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

    这是工作副本


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

    这是工作副本


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

    下面是一个我正在做的事情的示例,实际上是一样的:

    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 mapping,每个数组项中的每个属性都需要是可观察的。

    下面是我正在做的一个例子,实际上是一样的:

    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 mapping,每个数组项中的每个属性都需要是可观察的