我有一个系统,我希望用户在其中向项目添加标志(主题标签)。这是我的模型:
Social.Item = DS.Model.extend({
source: DS.belongsTo ('source'),
url: DS.attr (),
post_timestamp: DS.attr(),
summary: DS.attr(),
item_flags: DS.hasMany('item_flag', {async: true})
});
Social.Flag = DS.Model.extend({
kind: DS.attr(),
name: DS.attr(),
item_flags: DS.hasMany('item_flag', {async: true})
});
Social.ItemFlag = DS.Model.extend({
item: DS.belongsTo('item', {async: true}),
user: DS.belongsTo('user', {async: true}),
flag: DS.belongsTo('flag', {async: true}),
});
这是相关的车把代码:
{{#each item in site.sorted_items itemController="item"}}
{{{item.summary}}}
{{#each item_flag in item.item_flags}}{{item_flag.flag}}*FF*{{/each}}
{{/each}}
系统为每个项目输出几个FF标签——数据库中肯定有 item_flag 元素,我可以在我的 REST 端点上看到调用——系统正在从数据库中请求 item_flags。似乎belongsTo 关系另一侧的对象在此处不可用。我尝试扩展 ItemFlag 模型以包含以下代码:
flag_string: function() {
return this.get('flag').then(function (data) {return data.get('name')});
}.property('flag')
但这只会引发 NPE - ItemFlag 模型上的 this.get('flag') 返回 null。似乎有人提到了适配器上定义的“嵌入:始终”,但是 (a) 那是从 pre-ember-data-beta 日开始的,并且 (b) 它没有帮助(而且,我的记录也没有嵌入)。
在一般情况下,我想做的是弄清楚如何查看模型的父模型,由数据库中的关系定义。