gpt4 book ai didi

javascript - 在 Ember 数据中,在两个对象之间形成关联的最佳方式是什么?

转载 作者:行者123 更新时间:2023-11-28 20:43:14 24 4
gpt4 key购买 nike

假设某个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com