具有一对多关系的条件

时间:2013-08-04 17:31:22

标签: ruby-on-rails ember.js

我有两个表一个是帖子,另一个是评论。我有一个只有帖子列表的页面,如果它包含评论,我需要显示一个帖子图标。

App.Comment = DS.Model.extend({
    user_name: DS.attr('string'),
    user_id: DS.attr('number'),
    comment: DS.attr('string')
});

App.Post = DS.Model.extend({
    user_id: DS.attr('number'),
    comments: DS.hasMany('App.Comment',{embedded:true}),

这是样品车把

1. testpost     <show icon only if comment not empty>

1 个答案:

答案 0 :(得分:0)

要实现这一点,您可以创建一个computed property,如果它至少包含firstObject集,则会监听您的评论属性,这意味着有评论,如下所示:

App.Post = DS.Model.extend({
  user_id: DS.attr('number'),
  comments: DS.hasMany('App.Comment',{embedded:true}),
  hasComments: function() {
    var commentsLength = this.get('comments.length');
    return (commentsLength > 0);
  }.property('comments.firstObject')
});

然后在你的模板中添加一个if助手来监听hasComments计算属性,如果if返回true,这将显示post.hasComments助手之间的内容,这将是(commentsLength > 0)评估为true的时候:

1. testpost {{#if post.hasComments}}<show icon>{{/if}}

修改

请参阅此处了解正常工作DEMO

希望它有所帮助。