gpt4 book ai didi

javascript - 如何创建一个knockout.js 可观察值数组?

转载 作者:行者123 更新时间:2023-12-01 03:27:40 25 4
gpt4 key购买 nike

我有一个对象数组,我正在显示它们的属性。如何为它们添加单独的编辑功能?可以说它是列表中每个元素的编辑按钮。

当对象处于编辑模式时,我想显示输入字段而不是文本字段,为此我使用可见绑定(bind)。所以我需要为它们每个人提供一个 bool 可观察值。

在不知道列表中元素数量的情况下如何执行此操作...我还具有添加和删除功能,因此每次创建新元素时都需要向该数组添加更多可观察值。

我还尝试为我的对象提供 ko.observable 元素,但我无法做到这一点。

最佳答案

我喜欢在 observableArray 中使用对象。以下是根据需要进行任意多行的内联编辑功能的示例。

function Employee(emp) {
var self = this;
self.Name = ko.observable(emp.Name);
self.Age = ko.observable(emp.Age);
self.Salary = ko.observable(emp.Salary);
self.EditMode = ko.observable(emp.EditMode);
self.ChangeMode = function() {
self.EditMode(!self.EditMode());
}
}

function viewModel() {
var self = this;
self.Employees = ko.observableArray()
self.Employees.push(new Employee({
Name: "Joe",
Age: 20,
Salary: 100,
EditMode: false
}));

self.Employees.push(new Employee({
Name: "Steve",
Age: 22,
Salary: 121,
EditMode: false
}));

self.Employees.push(new Employee({
Name: "Tom",
Age: 24,
Salary: 110,
EditMode: false
}));
}
var VM = new viewModel();
ko.applyBindings(VM);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<table border=1>
<thead>
<tr>
<th>Name</th>
<th>Age</th>
<th>Salary</th>
<th></th>
</tr>
</thead>
<tbody data-bind="foreach: Employees">
<tr data-bind="if: !EditMode()">
<td data-bind="text: Name"></td>
<td data-bind="text: Age"></td>
<td data-bind="text: Salary"></td>
<td><button data-bind="click: ChangeMode">Edit</button></td>
</tr>
<tr data-bind="if: EditMode()">
<td>
<input data-bind="value: Name">
</td>
<td>
<input data-bind="value: Age">
</td>
<td>
<input data-bind="value: Salary">
</td>
<td><button data-bind="click:ChangeMode">Save</button></td>
</tr>
</tbody>
</table>

关于javascript - 如何创建一个knockout.js 可观察值数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44730738/

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