0

DS.Model クラスの属しているLeafクラスTreeがあり、1 つがTreehasManyleavesであるとします。つまり、次のようになります。

App.Leaf = DS.Model.extend({

    tree:   DS.belongsTo('App.Tree'),

});

App.Tree = DS.Model.extend({

    leaves:   DS.hasMany('App.Leaf'),

})

これまでのところ、私は手動でTreeの葉のフィールドを操作しています:

tree = App.store.create( App.Tree )
leaf = App.store.create( App.Leaf )
tree.get('leaves').pushObject( leaf )
App.store.commit()

これは機能しているように見えますが、その後、事態は奇妙になります:

リーフのツリー フィールドを確認すると、そこに App.Tree インスタンスがあり、id がツリーの ID と一致することがわかります。

leaf.get('tree').get('id')  // outputs 1
tree.get('id')             // outputs 1

これまでのところ大丈夫です。ここで、ツリーの葉フィールドをチェックします。これは、Ember 可変配列であると推測されます。次のように表示されます。

branch.get('leaves').content  // outputs [ 2 ]
leaf.get('id')                // outputs 1

したがって、葉のミュータブル配列は葉の ID の配列を格納していると思いますが、その ID は葉のインスタンスの ID と一致しません。

葉の ID が 2 の場合、branch.leaves.content フィールドに 4 として保存されます。葉の ID が 3 の場合、保存される ID は 6 などです。

4

1 に答える 1

3

この例ではすべてが正しく機能しており、コンテンツ変数のレコード配列にアクセスする と、オブジェクトの'のbranch.get('leaves')配列が返されます。clientId

ただし、他の方法でプロパティにアクセスすると、オブジェクト自体に透過的にアクセスするため、これは例外です。

あなたの場合、IDを使用したい場合branch.get('leaves').mapProperty('id')

于 2012-12-20T03:22:11.093 に答える