我在 Ember 中定义了三个模型,并且都根据请求返回 json:
App.Comment = DS.Model.extend({
discussion: DS.belongsTo('App.Discussion')
});
App.Discussion = DS.Model.extend({
meeting: DS.belongsTo('App.Meeting'),
comments: DS.hasMany('App.Comment')
});
App.Meeting = DS.Model.extend({
discussions: DS.hasMany('App.Discussion')
});
从会议控制器中的路由 meeting/:id 我希望能够遍历讨论的集合,为每个实例设置一个新的讨论控制器。然后我需要能够遍历每个讨论评论,再次做同样的事情。目前我似乎能够访问在关联上定义的属性,但是如果我调用计算属性,我会得到一个不正确的结果返回(例如计数为 0,而它应该是 5)。我认为问题与控制器的上下文有关,因为我似乎无法在控制器中返回该对象的值。这可能很简单,但我就是看不到。我究竟做错了什么?
以下是控制器:
App.MeetingController = Ember.ObjectController.extend({
needs: ['discussion']
});
App.DiscussionController = Ember.ObjectController.extend({
commentCount: function(){
return this.get('comments.length');
}.property('comments')
});
然后在 meeting.hbs 模板中:
{{#each discussion in discussions}}
{{ render 'discussion' discussion }}
{{/each}}
和讨论.hbs 模板,这有效:
<div>
{{ comments.length }}
</div>
但这不会:
<div>
{{ commentCount }}
</div>
我哪里错了?