2016-01-11 6 views
1

Я немного затруднен с тем, что должно быть легко достигнуто с помощью вычисляемых свойств 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 (см. Выше) не удалась.

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

Спасибо!

ответ

1

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

+0

спасибо! Я уже подозревал что-то вроде этого, хотя я не был уверен, как запросить его в ComputerProperty-Syntax. Просто 'Ember.computed ('storedFavorites.length', ...)' сделал это. –

 Смежные вопросы

  • Нет связанных вопросов^_^