0

比方说一些 DS.Model 类LeafbelongsTo class Tree,一个TreehasMany leaves,即:

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对象的数组。

但是,这是一个例外,因为以任何其他方式访问属性都将透明地访问对象本身。

在您的情况下,如果您想要使用 IDbranch.get('leaves').mapProperty('id')

于 2012-12-20T03:22:11.093 回答