使用来自ember data findQuery的结果作为ArrayController contentBinding

时间:2012-08-04 04:22:00

标签: ember.js ember-data

我正在尝试编写我的第一个“真正的”余烬应用程序。我已经完成了几个教程,现在我正在尝试将ember与Ember Data结合使用,从Rails应用程序中获取数据并显示它。

我已经得到它来获取数据,解析它并显示它,虽然我不相信它是以最好的方式。我有App.itemsController与此类似:

App.itemsController = Em.ArrayController.create({
  content: App.store.findQuery(App.Item, {visible: true}),
});

我还有一个App.ItemIndexView,其模板看起来像

{{#each App.itemsController}}
    {{id}}{{view App.ItemView item=this}}
{{/each}}

我对此有几个问题。

首先,我想允许用户将项目可见性更改为false。我在App.ItemView文件中有这段代码:

acknowledge: function() {
  this.item.set('visible', false);
  App.store.commit();
}

记录得到更新,但我希望整个项目从视图中删除而不是。如何从App.itemsController.content删除此记录?

我的第二个问题,实际上也可以回答第一个问题,就我的实施情况而言,我是否完全脱离了这个问题?我觉得应该有一种方法让我设置像contentBinding: 'App.store.findQuery(App.Item, {visible: true})'这样的东西,并删除不可见的东西,但我已经尝试过了,没有任何东西出现。所以我想知道我的整个应用程序设置方式是否存在缺陷,以防止事情变得不好。

1 个答案:

答案 0 :(得分:3)

您可以使用filter功能代替findQuery

content: App.store.filter(App.Item, function (item) {
  return item.get('visible');
})

当基础数据发生变化时,将重新评估结果。您仍然必须通过find / findAll / findQuery从服务器获取数据。