2012-08-04 41 views
2

我想写我的第一个“真正的”烬应用程序。我已经阅读了一些教程,现在我试图将Ember与Ember Data结合使用来从Rails应用中获取数据并显示它。使用来自余烬数据findQuery的结果作为ArrayController contentBinding

我已经得到它来获取数据,解析它,并显示它,尽管我不相信它是以最好的方式。我有一个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中删除?

我的第二个问题,实际上也可能回答第一个问题,我是否完全关闭了boondocks,就我的实现而言?我觉得应该有一种方法可以让我设置contentBinding: 'App.store.findQuery(App.Item, {visible: true})'之类的东西,并删除不可见的东西,但我试过了,没有任何东西显示出来。所以我想知道是否有我的整个应用程序设置的方式有缺陷,并保持玩起来不错。

回答

3

可以使用filter函数,而不是findQuery

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

结果将底层数据变化时进行重新评估。尽管你仍然需要通过find/findAll/findQuery从服务器获取数据。

+0

真棒,这正是我需要的。谢谢! – 2012-08-06 19:57:09