3

我有一个 REST 服务,它返回一个包含非规范化数据的集合。例如,它可能看起来像这样:

root
.
root:CollectionItem[0].alpha
root:CollectionItem[0].beta
root:CollectionItem[0].zappa
.
root:CollectionItem[1].alpha
root:CollectionItem[1].children[0].MoonUnit
root:CollectionItem[1].children[1].Dweezil
root:CollectionItem[1].zappa
.
root:CollectionItem[2].alpha
root:CollectionItem[2].beta
root:CollectionItem[2].zappa

将 Mapping PlugIn 与此类非规范化 JSON 数据一起使用的最佳策略是什么?问题是插件似乎使用 CollectionItem[0] 作为模板,但是当我遍历结果时,当我尝试读取 root.CollectionItem[1].beta (不存在)时,Knockout 正在爆炸。

编辑#1:我猜淘汰赛并不像我想象的那么受欢迎......这个问题似乎注定要获得风滚草奖。:-(

编辑#2:在淘汰赛论坛http://groups.google.com/group/knockoutjs/browse_thread/thread/6705c222481c7b75#上得到了一个可行的答案,所以我不必担心另一个风滚草奖!:-)

4

1 回答 1

3

我在 Knockout JS 论坛上从一个叫NTB的人那里得到了答案。如果有人感兴趣,这是他关于 JS fiddle 的解决方案。讨厌回答我自己的问题,但事实就是如此。

http://jsfiddle.net/PxeyY/

以下是他的总结:

“我有时会在调用映射器之前手动“按摩”数据,或者创建一个虚拟 shell 对象,该对象将所有可能的属性设置为 null(或 [] 在数组的情况下) - 然后使用 $.extend(dummy, real) 来创建 .fromJS() 可以使用的东西。您必须使用该模式遍历数组,但无论如何这是我的 $.02。

“不过,我自己也想听到更清洁的解决方案。”

于 2012-03-19T23:09:38.943 回答