假设某个 DS.Model 类 Leaf
属于类 Tree
,并且一个 Tree
有许多 leaves
,即:
App.Leaf = DS.Model.extend({
tree: DS.belongsTo('App.Tree'),
});
App.Tree = DS.Model.extend({
leaves: DS.hasMany('App.Leaf'),
})
到目前为止,我正在手动操作 Tree
的 leaves 字段:
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
到目前为止还好。现在我检查树的 leaves 字段,我认为它是一个 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,等等。
最佳答案
在您的示例中一切正常,访问内容变量branch.get('leaves')
记录数组返回对象clientId
的数组.
但是这是一个异常(exception),因为任何其他方式访问属性都会透明地访问对象本身。
在您的情况下,如果您想要ID,请使用branch.get('leaves').mapProperty('id')
关于javascript - 在 Ember 数据中,在两个对象之间形成关联的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13961150/