最終的にデータベースに保存されたメッセージを取得し、ユーザーに対してグローバルに設定するメッセージサービスがありますが、今のところ、そのように設定しています
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
読み取り済みとしてマークされた後、テンプレートはクラスを削除するために計算されたものを更新していません。