Я немного затруднен с тем, что должно быть легко достигнуто с помощью вычисляемых свойств 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 (см. Выше) не удалась.
Очевидно, я мог бы отправить действие контроллеру и позволить ему обрабатывать его и обновлять шаблон, но это кажется немного переусердством? Что мне не хватает?
Спасибо!
спасибо! Я уже подозревал что-то вроде этого, хотя я не был уверен, как запросить его в ComputerProperty-Syntax. Просто 'Ember.computed ('storedFavorites.length', ...)' сделал это. –