gpt4 book ai didi

javascript - 编辑功能在 Knockout js 中不起作用

转载 作者:行者123 更新时间:2023-12-02 17:01:51 26 4
gpt4 key购买 nike

我刚刚使用网上提供的示例创建了一个可编辑的。当我尝试编辑网格时,它不显示它显示输入字段空白的值。任何人都可以帮忙吗?在编辑中我调用这个函数

  self.editFruit = function (fruit) {
if (self.editingItem() == null) {
// start the transaction
fruit.beginEdit(self.editTransaction);

// shows the edit fields
self.editingItem(fruit);
}
};

这里是 fiddle jsfiddle

最佳答案

第一次评估绑定(bind)时,每个水果的可观察值的 editValue 子可观察值 ( data-bind="value: name.editValue" ) 不存在。当您单击“编辑”链接时,将创建 editValue 可观察值,但 knockout 不知道它必须重新绑定(bind)。

您可以通过两种方式解决这个问题。

1.围绕每个输入创建一个虚拟 if 绑定(bind)。当 if 变为 true 时,内容将被重新插入到 DOM 中,从而导致重新评估绑定(bind)。确保在设置 editValue observable 之前将 editValue observable 附加到其父级,否则您会遇到相同的情况

<!-- ko if: $root.isItemEditing($data) -->
<input data-bind="..."></input>
<!-- /ko -->

2.确保所有 observable 在绑定(bind)模型之前都将 editValue observable 附加到父 observable,即在 beginEdit fn 中设置 editValue observable 的值。

function Fruit(data) {
var self = this;
self.name = ko.observable(data.name || "");
self.name.editValue = ko.observable();

self.rate = ko.observable(data.rate || "");
self.rate.editValue = ko.observable();
}

ko.observable.fn.beginEdit = function (transaction) {
...

if (self.slice)
self.editValue(self.slice());
else
self.editValue(self());

...
}

关于javascript - 编辑功能在 Knockout js 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25620652/

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