Ember компонент: вычисляемое свойство, наблюдающее массив локальной памяти
Я в недоумении от того, что должно быть легко достигнуто с помощью вычисляемых свойств Ember. Я использую https://github.com/funkensturm/ember-local-storage для управления локальным списком избранного.
Теперь у меня есть компонент, который должен отображать состояние объекта, а также печально известную кнопку "звездочка" для переключения в избранное состояние.
Мой код компонента выглядит следующим образом:
import Ember from 'ember';
import FavoritesLocal from 'my-app/models/favorites-local';
export default Ember.Component.extend({
storedFavorites: FavoritesLocal.create(),
isFavorite: Ember.computed('storedFavorites', function () {
return this.get('storedFavorites').contains(this.model.get('id'));
}),
actions: {
toggleFavorite() {
if(this.get('isFavorite')) {
this.get('storedFavorites').removeObject(this.model.get('id'));
} else {
this.get('storedFavorites').addObject(this.model.get('id'));
}
}
}
});
Шаблон содержит
{{#if isFavorite}}
<a {{action 'toggleFavorite'}} href="#"></a>
{{else}}
<a {{action 'toggleFavorite'}} href="#"></a><
{{/if}}
Модель для локального хранилища просто
import StorageArray from 'ember-local-storage/local/array'
export default StorageArray.extend({
storageKey: 'myFavorites'
});
Теперь, конечно, я хочу, чтобы компонент обновлялся при нажатии кнопки.
Мой конкретный вопрос касается того, ЧТО именно вычисленное свойство должно соблюдать. Необработанная попытка прослушивания изменений в свойстве хранимой переменной (см. Выше) не удалась.
Ясно, что я мог бы отправить действие на контроллер и позволить ему обработать его и обновить шаблон, но это кажется немного переборщенным? Что мне не хватает?
Спасибо!
1 ответ
Я еще не работал с этим, но я думаю, что вы хотите наблюдать storedFavorites.length
,