Я написал службу уведомлений загрузки:Вычисляется собственности на сервис, который обращается в магазин
import Ember from 'ember';
export default Ember.Service.extend({
sessionUser: Ember.inject.service(),
store: Ember.inject.service(),
read() {
let currentUserId = this.get('sessionUser.user.id');
return this.get('store').query('notification', {
userId: currentUserId,
read: true
});
},
unread() {
let currentUserId = this.get('sessionUser.user.id');
return this.get('store').query('notification', {
userId: currentUserId,
read: false
});
}
});
Я хочу изменить цвет значка на панели навигации, когда есть непрочитанные уведомления. Панель навигации является компонентом:
import Ember from 'ember';
export default Ember.Component.extend({
notifications: Ember.inject.service(),
session: Ember.inject.service(),
hasUnreadNotifications: Ember.computed('notifications', function() {
return this.get('notifications').unread().then((unread) => {
return unread.get('length') > 0;
});
})
});
И шаблон затем использует hasUnreadNotifications
свойство решить, следует использовать класс выделить:
<span class="icon">
<i class="fa fa-bell {{if hasUnreadNotifications 'has-notifications'}}"></i>
</span>
Однако, это не работает. Хотя хранилище вызвано и уведомления возвращаются, hadUnreadNotifications
не разрешает логическое. Я думаю, это потому, что он возвращает обещание, и шаблон не может с этим справиться, но я не уверен.
Вопросы
- Это своеобразный уголек, чтобы обернуть магазин в службе, как это. Я делаю это, потому что неудобно загружать уведомления в маршрут приложения, чтобы показать счет.
- Почему
hasUnreadNotifications
не возвращает логическое значение? - Возможно ли сделать объекты
read
иunread
вместо функций, поэтому вычисленное свойство может быть создано в службе для вычисления счета?