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

标签 javascript web-applications ember.js ember-data

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

相关文章:

javascript - 如何从 JS 变量获取 Highcharts 实体仪表数据?

javascript - 如何在 JavaScript 字符串中包含变量

java - 找出与 web 服务器生成的 html 页面关联的类文件

javascript - 在 Javascript 中对图像进行哈希处理

javascript - AJAX调用后如何找到负责滚动的JS代码

unit-testing - 单元测试和 Web 应用程序 - 资源

php - 通过php表单向mysql数据库添加多个条目

javascript - 当绑定(bind)到深度嵌套的属性时,Ember 计算属性不会触发

javascript - Ember Simple Auth 如何在 session 无效后重定向到登录?

javascript - EMBER—断言失败 : Error while loading route: TypeError: Object [object Object] has no method 'addArrayObserver'