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,

Другие вопросы по тегам