我有一个简单的应用程序,其中用户有许多通知,通知具有readAt属性,我想显示未读通知的计数。我有以下代码:
用户模型:
import DS from 'ember-data';
export default DS.Model.extend({
notifications: DS.hasMany('notification', {async: true}),
unreadNotifications: function(){
return this.get('notifications').filter(function(notification){
return notification.get('readAt') === null;
});
}.property('notifications')
});
模板:
<span class="badge messages-count">
{{currentUser.unreadNotifications.length}}
</span>
我正在动态推送新通知。如果我将其设置为只计算通知(即{{currentUser.notifications.length}},但计算的unreadNotifications属性不会更新,除非刷新页面,这样做非常有效。我是否错过了正确绑定这些数据的方法?
非常感谢
答案 0 :(得分:1)
由于notifications
是数组类型属性,因此您需要使用定义为here的@each
语法。
因此,您的unreadNotifications
属性应定义如下:
unreadNotifications: function(){
return this.get('notifications').filter(function(notification){
return notification.get('readAt') === null;
});
}.property('notifications.@each.readAt')