1

次のフィドルを参照してください: http://jsfiddle.net/VkKX2/138/ (必ずコンソールを開いてください)

TL;DR; 2 つの hasMany コレクションがあり、新しいモデルを一方のコレクションに追加すると、もう一方のコレクションにも追加されます。

SO にはコードが必要なので、非常に大まかな概要を以下に示します。

var foo = App.FooModel.find(101);
var bar = App.BarModel.find(204);

foo.get('collection2').addObject( bar );
foo.get('collection1').contains( bar ); // yields true

質問:オブジェクトが両方のコレクションに追加されるのはなぜですか!?

4

1 に答える 1

0

これを投稿したとき、私は問題に気づきました:

要約を生成するときに、いずれかのコレクション内のすべてのオブジェクトをループしたいと考えています。

var bars = foo.get('collection1').addObjects( foo.get( 'collection2' )).uniq();

これには、結果の変数だけでなく、collection1 の参照に collection2を追加するという、実現されていない効果があります。barコードを次のように変更すると、問題は解決します。

var bars = foo.get('collection1').toArray().addObjects( foo.get( 'collection2' )).uniq();
于 2013-03-04T19:48:26.840 に答える