Ember组件:计算属性观察本地存储阵列

时间:2016-01-11 13:10:43

标签: ember.js computed-properties ember-local-storage

我对使用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 个答案:

答案 0 :(得分:1)

我还没有使用过这个,但我的猜测是你要观察storedFavorites.length