作为组件参数传递的对象键的计算属性

时间:2016-01-07 19:04:08

标签: ember.js service computed-properties

我有一个消息服务,最终会将消息保存在数据库中并为用户全局设置它们但是现在我将它们设置为这样

  messages: [
    Ember.Object.create({
      id: 1,
      name: "Out Bid",
      body: "You've been out bid on an item",
      read: false,
      seen: false
    }),
    Ember.Object.create({
      id: 2,
      name: "Out Bid",
      body: "You've been out bid on an item, You've been out bid on an item",
      read: true,
      seen: false
    })
  ],

我有一些计算器可以告诉我有多少这些消息没有被标记为seen,当我点击此气泡显示该数字是否超过0时我会转到messages路线。 在messages路由中,我注入messages服务并将模型设置为等于服务在其中的消息

model() {
    return this.get('messages').get('messages');
}

此路由显示呈现组件的每个循环中的消息

{{#each model key="id" as |message|}}
    {{message-item message=message}}
{{/each}}

在组件中,我尝试添加unread类,如此

classNameBindings: ['unread'],
unread: Ember.computed('message.unread',function(){
    return this.get('message').get('read') === false;
}),

这是有效的,但是当我触发点击操作以在模态中显示消息并因此将其标记为read时,计算机不会更新

click() {
    var message = this.get('message');
    this.get('notification').notify({message: message.get('body')});
    message.set('read',true);
}

如果console.log在设置之前和之后message.get('read')的值,我看到它已正确设置,但模板未更新计算以删除unread在它被标记为阅读之后上课。

1 个答案:

答案 0 :(得分:1)

你看错了财产。请注意read而不是unread

classNameBindings: ['unread'],
unread: Ember.computed('message.read',function(){
    return this.get('message').get('read') === false;
}),