我们在我们的应用程序中大量使用knockout.js,但已经遇到了新的情况。它围绕ko.toJSON
,但它似乎是造成问题的基础ko.toJS
。
我们有一个具有许多属性的对象,其中一个属性是其他对象的数组。在通过ko.toJS
运行它之后,它成为一个对象,每个属性都给出了原始索引的名称。我无法在测试代码中复制它 - 实际上ko.toJS
在我的其他测试中将数组正确地保存为数组。
ko.toJS
错误并将其转换为对象的示例:
ko.toJS
正确的示例,并将其保留为数组:
关于为什么ko.toJS
可能会导致这个或者下一步看什么的任何想法都会受到赞赏...!
更新
当使用knockout的调试版时,这是它报告传入mapJsObjectGraph的数组的方式:
答案 0 :(得分:4)
这是淘汰赛中的一个错误。一个issue has already been opened。
解决方法是更改上面提到的函数mapJsObjectGraph:
中的行var outputProperties = rootObject instanceof Array ? [] : {};
到此:
var outputProperties = toString.call(rootObject) === "[object Array]" ? [] : {};
根据错误报告,似乎这不是instanceof
在敲门中使用的唯一地方。