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

このような正規化されていない JSON データで Mapping PlugIn を使用するための最良の戦略は何ですか? 問題は、PlugIn が CollectionItem[0] をテンプレートとして使用しているように見えることですが、結果を foreach すると、root.CollectionItem[1].beta (存在しない) を読み込もうとすると Knockout が爆発します。

編集 #1 : Knockout は思ったほど人気が​​ないようです... この質問は Tumbleweed Award に向けられているようです。:-(

編集 #2 : ノックアウト フォーラムhttp://groups.google.com/group/knockoutjs/browse_thread/thread/6705c222481c7b75#で実行可能な回答を得たので、別の Tumbleweed Award について心配する必要はありません! :-)

4

1 に答える 1

3

Knockout JS フォーラムでNTBという名前の人から回答を得ました。誰かが興味を持っている場合に備えて、JSフィドルに関する彼のソリューションを次に示します。私自身の質問に答えるのは嫌いですが、それはそれです。

http://jsfiddle.net/PxeyY/

彼の要約は次のとおりです。

「マッパーを呼び出す前に手動でデータを「マッサージ」したり、すべての可能なプロパティを null (または配列の場合は []) に設定したダミーのシェル オブジェクトを作成したりして、 $.extend(dummy, real) to create something .fromJS() can work with. そのパターンで配列を反復処理する必要がありますが、とにかくそれは私の $.02 です。

「私自身もよりクリーンなソリューションを聞きたいです。」

于 2012-03-19T23:09:38.943 に答える