【问题标题】:Get attribute from parent resource in ember.js从 ember.js 中的父资源获取属性
【发布时间】:2013-11-24 06:28:31
【问题描述】:

我有一个模型userhashtag,它属于hashtag(即一对多)。顾名思义,userhashtag 模型将user 模型与hashtag 模型链接起来。

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

这是我的用户标签模型:

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 函数没有返回名称有任何建议吗?另外,我觉得我没有在最佳实践中这样做,我应该怎么做?

谢谢!

【问题讨论】:

  • 您能否向我们展示您的请求中的 json 是什么?

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


【解决方案1】:

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

其次,hashTag belongsTo 有效吗?

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

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

{{hashtag.name}}

你不应该在模型内部使用 store,我什至不肯定你是如何做到这一点的,而不是将 store 注入到所有东西中。 (我对你应该发布的踢腿和咯咯笑很感兴趣)

【讨论】:

  • 不,belongsTo 不起作用。根据 ember chrome 扩展 userhashtag.hashtag 为空。我没有意识到在模型中调用商店不是一个好主意,也许这就是它不起作用的原因(尽管它确实获得了主题标签模型)。什么是承诺?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-09
    • 2021-11-14
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多