0

keyKnockoutJS のマッピング プラグインのマッピング オプションの機能がわかりません。ドキュメントに基づいて、キー関数は、オブジェクトが新しいか古いかを判断するために使用するプロパティをマッピング プラグインに通知することを理解しています。

彼らはこの例を使用しています... http://knockoutjs.com/documentation/plugins-mapping.html#advanced_usage

しかし、それは言う..

このように、マッピング プラグインが children 配列内の項目をチェックするたびに、id プロパティのみを調べて、オブジェクトが完全に置き換えられたのか、単に更新が必要なのかを判断します。

「更新が必要」とはどういう意味ですか? childrenオブジェクト全体を更新しますか?children変更されたオブジェクトのプロパティのみを更新しますか? よくわかりません。

彼らの例は単純で、より現実的なデータのサンプルでは機能しません。これが私の問題のjsFiddleです... http://jsfiddle.net/rQfpr/1/

私の例では、 のUserMoviesオブジェクトを単に置き換えようとしていますself.movies[1]

4

1 に答える 1

0

相互作用を理解するのに役立つ可能性のあるJSFiddleは次のとおりです。

注:マッピングの「update」エントリは、コンソールにログインできるようにするためのものです...更新の実行方法をカスタマイズする必要がない限り、このエントリは必要ありません。

http://jsfiddle.net/jearles/wgZ59/49/

「マトリックスのロード」を押すと、次のように表示されます。

12
23
34

[変更]をクリックすると、マトリックスが再ロードされます。

24
45

私が投稿したコンソールメッセージを見ると、次のようになっています。

Creating 1
Updating 1
Creating 2
Updating 2
Creating 3
Updating 3
Updating 2
Creating 4
Updating 4

これにより、マッピングプラグインが実行しているアクションが確認されます。

最初は:

12 - Is created and updated
23 - Is created and updated
34 - Is created and updated

更新時:

12 - Is deleted
23 - Is changed to 24
34 - Is deleted
45 - Is added

-

'key'エントリは、特定のプロパティを "key"として指定することにより、マッピングプラグインが新規または既存のエントリを判別するのに役立ちます。それ以外の場合は、オブジェクト全体が等しいかどうかが比較されます。

于 2012-12-19T16:53:00.057 に答える