jquery - 在表中显示动态 knockout 可观察数组

标签 jquery json knockout.js

给定一个在 viewModel 中定义的可观察数组“sampleList”。

 [
   { 
     name: abc, 
     age:  40,
     InterestLevel: {
        trekking: 50,
        hiking : 43
     }  
   },

  { 
     name: def, 
     age:  34,
     InterestLevel: {
       cricket: 55,
       cycling: 75
     }  
   }
 ]

如何使用 KO 自定义绑定(bind)或任何最佳可能的方式从上述数据生成下表。

-------------------------------------

name  age  Interest  InterestLevel
-------------------------------------

abc   40    trekking    50
abc   40    hiking      43
def   34    cricket     55
def   34    cycling     75

[请注意,InterestLevel 内的键是动态的]。

最佳答案

首先,您必须对数据进行非标准化:

this.TableData = ko.computed(function()
    {
    var data = ko.unwrap(this.sampleList)
    var res = ko.observableArray();

    for (var i in data)
    {
        for (var il in data[i].InterestLevel)
        {
            var ild = data[i].InterestLevel[il];
            res.push({ name: data[i].name, age: data[i].age, Interest: il, InterestLevel: ild });
        }
    }

    return res;
}, this);

然后将您的表绑定(bind)到TableData():

<table>
    <thead>
        <tr>
             <td>Name</td>
             <td>Age</td>
             <td>Interest</td>
             <td>Interest Level</td>
        </tr>
    </thead>

    <tbody data-bind="foreach: TableData()">
        <tr>
             <td data-bind="text: name">Name</td>
             <td data-bind="text: age">Age</td>
             <td data-bind="text: Interest">Interest</td>
             <td data-bind="text: InterestLevel">Interest Level</td>                
        </tr>
    </tbody>
</table>

参见Fiddle

关于jquery - 在表中显示动态 knockout 可观察数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26775097/

相关文章:

php - POST 形式 Jquery select2

javascript - 从 JQuery 对象创建 Javascript 对象

php - Ajax 投票民意调查直接工作,但不是通过第二个 ajax 调用

javascript - KendoUI 网格服务器分页

javascript - 为什么文本在我的样式中闪烁?

javascript - 在单个函数中处理多个对象

java - Android - gson.toJson 在 ArrayList<OverlayItem> 上抛出 StackOverFlowError

javascript - 我究竟如何从这个巨大的 JSON 对象中获取单个值?

knockout.js - KnockOutJS - 获取 'undefined' 值,不知道为什么

javascript - 为什么这个 knockout 代码没有获取绑定(bind)到 ObservableArray 的更改?