如果存在至少一个子对象,则只显示模板的一部分

Only show part of template if there exists at least one child-object

我有这样的模型:

import DS from 'ember-data';

var Post = DS.Model.extend({
  title: DS.attr('string'),
  downloads: DS.hasMany('download')
});

export default Post;

并且希望仅当 post 中至少有 1 个或多个下载时才显示下载部分。

我尝试在控制器中引入计算 属性,但无法从那里访问模型。

我还能做什么?

编辑:这是向您展示我正在尝试做的事情的控制器:

import Ember from 'ember';

export default Ember.ObjectController.extend({

  hasDownloads: function(){
    console.log(this.get('downloads')) // <- undefined
    return true
  }.property('model'),

})

EDIT2:上面的对象控制器没有路由,因为它是使用`{{render "post"}}渲染的。这是一个示例模板。

<ul class="posts">
  {{#with model as post}}
  {{render "post"}}
  {{/with}}
</ul>

那将是它的路线:

import Ember from 'ember';

export default Ember.Route.extend({

  model: function(params) {
    return this.store.find('post', params).then(function(posts) {
      return posts.get('firstObject');
    });
  }
});

使用 model.downloads 直接访问控制器上的 属性:

import Ember from 'ember';

export default Ember.ObjectController.extend({

  hasDownloads: function(){
    console.log(this.get('model.downloads'))
    return true
  }.property('model.@each'),
})

根据您使用的 Ember 版本,控制器的代理行为将不再有效。此外,更改 属性 以便在添加和删除下载时更新。