通过计算机属性将新记录添加到商店时进行侦听

时间:2014-08-15 09:26:19

标签: ember.js ember-data

我正在使用websockets将记录推送到我的商店。

我通过把手模板在屏幕上显示项目

{{#each item in items}}
  <div>{{item.name}}</div>
{{/each}}

在我的控制器中,我有物品集合

items : function() {
   var items = this.store.find('items');
   return items.filterBy({type : "NEW"});
}.property()

现在,当新记录添加到商店时,我需要自动更新商品。

items : function() {
   var items = this.store.find('items');
   return items.filterBy({type : "NEW"});
}.property('??????')

当通过计算属性添加记录时,有一些方法可以监听商店。理想情况下,我想听听特定类型的模型。

2 个答案:

答案 0 :(得分:2)

执行此操作的最佳方法是:

items : function() {
  return this.store.filter(function(item){
      return item.get('TYPE') === 'NEW';
  });
}.property()

store.filter返回一个实时数组,只要存储中有任何更改,它就会更新,因此它将响应所推送的新记录。

答案 1 :(得分:0)

我假设您正在使用阵列控制器。您只需要观察内容数组,如content.[]。所以你的控制器代码看起来应该是

App.IndexController = Em.ArrayController.extend({
  filteredContent: function() {
    return this.get('model').filterBy('type', 0);
  }.property('model.[]')
});

并使用模板中的filteredContent

{{#each filteredContent}}
  <li>{{title}} - {{songCount}}</li>
{{/each}}

Here is a working bin.