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

时间:2015-02-24 14:47:17

标签: ember.js ember-cli

我有这样的模特:

import DS from 'ember-data';

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

export default Post;

并且只有在帖子中至少有1个或更多下载时才会显示下载部分。

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

我还能做什么?

编辑:这是控制器显示我想要做的事情:

import Ember from 'ember';

export default Ember.ObjectController.extend({

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

})

EDIT2:上面的Object-controller没有路由,因为它使用`{{render&#34; post&#34;}}呈现。这是一个示例模板。

<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');
    });
  }
});

1 个答案:

答案 0 :(得分:1)

使用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版本,控制器的代理行为将不再有效。此外,更改属性以便在添加和删除下载时更新它。