Компонент 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'  
});

Теперь, конечно, я хочу, чтобы компонент обновлялся при нажатии кнопки.

Мой конкретный вопрос касается того, ЧТО именно вычисляемое свойство должно наблюдать. Грубая попытка прослушивания изменений в свойстве storedFavorites (см. Выше) не удалась.

Ясно, что я мог бы отправить действие контроллеру и позволить ему обработать его и обновить шаблон, но это кажется немного перебором? Что мне не хватает?

Спасибо!


person Julian Rubisch    schedule 11.01.2016    source источник


Ответы (1)


Я еще не работал с этим, но полагаю, что вы хотите понаблюдать storedFavorites.length.

person Remi Smirra    schedule 11.01.2016
comment
Благодарность! Я уже подозревал что-то подобное, хотя не знал, как запросить это в ComputerProperty-Syntax. Просто Ember.computed('storedFavorites.length', ...) это сделал. - person Julian Rubisch; 11.01.2016