各レベルでさまざまな不要なプロパティを省略し、基本的な階層を保持するノックアウト ビュー モデル構造で表現しているサーバーからの深いオブジェクト グラフがあります。
ノックアウト マッピング プラグインを双方向で使用しています。ルートの下の各ビュー モデル レベルで、現在のビュー モデルの "コンストラクター" は、参照として保持する親ビュー モデルと、それ自体を構築するために必要な元のデータの一部を受け入れます。次に、マッピング オプションの新しいセットを作成して、独自の子を作成します。
これを説明する非常に単純化されたフィドルを作成しました。
取得時にサーバーから必要な大量の読み取り専用メタデータがありますが、グラフを JSON としてポストするときは省略してください。各レベルで toJSON プロトタイプ メソッドを使用して不要なものを選別してきましたが、これはある時点でうまく機能していましたが、現在は機能しなくなりました。
ローカルでは、私の toJSON オーバーライドは (アラートとコンソール ログに基づいて) 起動さえしていないように見えますが、このフィドルでは起動しますが、最終的なオブジェクトには削除されたプロパティ「子」がまだ含まれています。toJSON メソッドによって削除されていることがわかりますが、ルートのマッピング解除後も存在し、アラートに表示されます。
では、2 つの質問 - toJSON オーバーライドがローカルで起動しない原因と、単純化されたフィドルのマッピング解除ロジックの誤解はどこにありますか?
よろしくお願いします。