gpt4 book ai didi

knockout.js - 从 ko.observableArray 动态设置表列

转载 作者:行者123 更新时间:2023-12-04 10:01:00 25 4
gpt4 key购买 nike

我正在尝试基于 ko.observableArray 输出数据表其中返回的列不是预先确定的。

我的 observableArray self.userData()[0] 中的一个项目样本将是:

Object {
RowNum: 1,
ID: "123",
Surname: "Bloggs",
Forename: "Joe",
Address line 1: "1 Park Lane"
}

根据用户选择输出的内容,这些列每次都会不同。

我希望输出中的列标题由数组中存在的内容确定,因此我想要的输出是:
<table>
<thead>
<tr>
<th>RowNum</th>
<th>ID</th>
<th>Surname</th>
<th>Forename</th>
<th>Address line 1</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>123</td>
<td>Bloggs</td>
<td>Joe</td>
<td>1 Park Lane</td>
</tr>
<!-- repeated for each row -->
</tbody>
</table>

我知道我可以使用 foreach重复行和列,但我不确定如何根据我的 observableArray 中的内容动态引用它.

目前我有这个基本结构:
<table>
<thead>
<tr data-bind="foreach: userData [property name] ">
<th>
<span data-bind="text: [property name]"></span>
</th>
</tr>
</thead>
<tbody data-bind="foreach: userData">
<tr data-bind="foreach: userData [property name]>
<td data-bind="text: [property value]">
</td>
</tr>
</tbody>
</table>

最佳答案

你可以这样做:

JS:

var VM = function () {
var self = this;
self.items = ko.observableArray();
self.columnNames = ko.computed(function () {
if (self.items().length === 0)
return [];
var props = [];
var obj = self.items()[0];
for (var name in obj)
props.push(name);
return props;


});

};
var vm = new VM();

ko.applyBindings(vm);

vm.items.push({
'Name': 'John',
'Age': 25
});
vm.items.push({
'Name': 'Morgan',
'Age': 26
});

看法 :
<table>
<thead>
<tr data-bind="foreach: columnNames">
<th> <span data-bind="text: $data"></span>

</th>
</tr>
</thead>
<tbody data-bind="foreach: items">
<tr data-bind="foreach: $parent.columnNames">
<td data-bind="text: $parent[$data]"></td>
</tr>
</tbody>
</table>

See fiddle

我希望它有帮助。

关于knockout.js - 从 ko.observableArray 动态设置表列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17446548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com