gpt4 book ai didi

javascript - 从 HashTable 存储和检索 KO ObservableArray

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:48:08 26 4
gpt4 key购买 nike

我有一个从我的 aspx 绑定(bind)到的可观察数组:

var contacts = ko.observableArray(),

当它被填充时,我将数组存储在哈希表中,这样我就不必再次从我的服务中检索值(这是一个非常缓慢的过程,所以如果我不想重新检索某些东西,我'之前已经检索过):

var toHash = contacts();
contactsHash[query] = toHash;

我的哈希表:

var contactsHash = {},

这是我的可观察数组在存储时的样子(键是一个字符串):

toHash

以下是我如何将其拉回:

if (contactsHash[query]) {
contacts.removeAll();
var retrieved = contactsHash[query];
contacts(retrieved);
}

这是我把它拉回来时的样子:

enter image description here

这显然给我带来了问题,因为可观察数组没有填充我之前存储的数组......也是一样的。谁能指出这里出了什么问题?

最佳答案

在 JavaScript 中,对象是通过引用传递的。当您调用 contacts.removeAll(); 时,您还清除了 contactsHash[query],因为它们都指向内存中的同一个对象。

试试这个
contactsHash[query] = toHash.slice();

代替
contactsHash[query] = toHash;

编辑:
slice() 返回数组指定部分的浅拷贝。

关于javascript - 从 HashTable 存储和检索 KO ObservableArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21886761/

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