【问题标题】:Computed property on key of object passed as component parameter作为组件参数传递的对象键的计算属性
【发布时间】:2016-04-12 07:35:03
【问题描述】:

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

  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 类。

【问题讨论】:

    标签: ember.js service computed-properties


    【解决方案1】:

    你看错了财产。观看read 而不是unread:

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

    【讨论】:

    • 你每天一整天都在编码,并期望不会错过这样的小事!
    猜你喜欢
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 2019-05-25
    • 2012-11-25
    相关资源
    最近更新 更多