从ember.js中的父资源获取属性

时间:2013-11-24 06:28:32

标签: javascript ruby-on-rails ember.js

我有一个属于userhashtag的模型hashtag(即一个多数)。顾名思义,userhashtag模型将user模型与hashtag模型相关联。

userhashtag模型仅包含 user_id hashtag_id 。我有一个ember模板,列出了某个 user_id 的所有用户标签,我想显示带有 name 属性的userhashtags,包含在其父级,hashtag模型中

这是我的userhashtag模型:

App.Userhashtag = DS.Model.extend({
userId: DS.attr('number'),
hashtagId: DS.attr('number'),
createdAt: DS.attr('date'),
updatedAt: DS.attr('date'),
user: DS.belongsTo('user'),
hashtag: DS.belongsTo('hashtag'),
hashtagname: function(){
    var h = this.store.find('hashtag', this.get('hashtagId'));
    return h.get('name');
}.property('hashtagId')
});

我试图在我的模板中调用它:

{{userhashtag.hashtagname}}

我正在使用chrome开发人员工具的ember扩展,我可以看到它正确加载了所有hashtagsuserhashtags。但是,我仍然没有看到name属性。经过检查,商店正确找到相应的主题标签,但var h正在返回未定义。

有人会对hashtagname函数没有返回名称的原因提出任何建议吗?另外,我觉得我在最佳实践中并没有这样做,我应该做些什么呢?

谢谢!

2 个答案:

答案 0 :(得分:1)

首先,h应该是承诺,而不是记录。

其次,hashTag是否属于工作?

hashtagname: function(){
   return this.get('hashtag.name');
}.property('hashtag')

同时在模板中你可以轻松地做到

{{hashtag.name}}

你不应该在模特里面使用商店,我甚至不赞成如何在不将商店注入所有商品的情况下做到这一点。 (我很喜欢你应该发布的踢腿和咯咯笑声)

答案 1 :(得分:0)

您应该从模型中删除hastagId和userId。当ember-data尝试解析模型并找到somemodel_idbelongsTo具有相同名称(没有_id)时,它还会加载belongsTo(或者它加载,当需要它的某些属性时,如果我记得正确的话。)