如果存在至少一个子对象,则只显示模板的一部分
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 版本,控制器的代理行为将不再有效。此外,更改 属性 以便在添加和删除下载时更新。
我有这样的模型:
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 版本,控制器的代理行为将不再有效。此外,更改 属性 以便在添加和删除下载时更新。