gpt4 book ai didi

javascript - ko.toJS 将数组转换为对象

转载 作者:行者123 更新时间:2023-11-29 18:14:05 25 4
gpt4 key购买 nike

我们在我们的应用程序中大量使用 knockout.js,但遇到了一个新场景。它围绕 ko.toJSON 展开,但它似乎是导致问题的底层 ko.toJS

我们有一个具有多个属性的对象,其中一个是其他对象的数组。通过 ko.toJS 运行后,它变成了一个对象,每个属性都给定了原始索引的名称。我无法在测试代码中复制它 - 实际上 ko.toJS 在我的其他测试中正确地将数组保存为数组。

ko.toJS 错误并将其转换为对象的示例:

enter image description here

ko.toJS 正确处理并将其保留为数组的示例:

enter image description here

关于为什么 ko.toJS 可能导致此问题或接下来要看什么的任何想法表示赞赏......!

更新

当使用 knockout 的调试器版本时,它是这样报告传递给 mapJsObjectGraph 的数组的:

enter image description here

最佳答案

这是 knockout 中的一个错误。一个issue has already been opened .

解决方法是更改​​上面提到的函数中的行,mapJsObjectGraph:

var outputProperties = rootObject instanceof Array ? [] : {};

为此:

var outputProperties = toString.call(rootObject) === "[object Array]" ? [] : {};

根据错误报告,这似乎不是唯一在 knockout 中使用 instanceof 的地方。

关于javascript - ko.toJS 将数组转换为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24890168/

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