gpt4 book ai didi

javascript - 替换 observableArray 中的项目

转载 作者:IT王子 更新时间:2023-10-29 03:18:54 26 4
gpt4 key购买 nike

我正在尝试用新内容替换 observableArray 中某个项目的所有内容。

var oldLocation = ko.utils.arrayFirst(self.locations(), function (item) {
return item.id == value.id;
});
self.locations.replace(self.locations.indexOf(oldLocation), new location(value));
self.locations.valueHasMutated();

我也试过

self.locations[self.locations.indexOf(location)] = new fizi.ko.models.location(value);

但没有任何效果。正在正确检索索引,但未更新项目。

最佳答案

替换函数接受两个参数,您要替换的项目和您要替换的新项目。您传递的是索引而不是要替换的项目,因此它不起作用。

替换调用应该是:

self.locations.replace(oldLocation, new location(value));

附带说明一下,您不需要在那里调用 valueHasMutated(),它会被 replace() 调用调用。


旁注,许多原生 Array 函数可用于可观察数组。它们被转发到底层数组值,根据需要触发突变通知。这些包括:

pop, push, reverse, shift, sort, 拼接, unshift, slice (readonly).

Knockout 提供了这些应该记录在案的额外方法 here (目前 v3.5.1):

删除, removeAll, destroy, destroyAll, indexOf, 替换排序反转

关于javascript - 替换 observableArray 中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15440810/

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