Ember.js 筛选余烬结果

Ember.js 筛选余烬结果,ember.js,ember-data,Ember.js,Ember Data,我可以使用Ember.js(rc0)和Rails,并拥有一个简单的应用程序,正如我所期望的那样工作,但我想专注于一个特定的故事: 作为一个用户,我想在表单中键入“过滤器”文本,然后让我的ArrayController只显示与过滤器匹配的项目。例如,想象一个联系人应用程序,它显示的人的名字像“Ya%” 警告:假设数据库中有数千条联系人记录。我不想在客户机上筛选这些联系人,在服务器上这样做更有意义 问题: 如何在ember.js/ember-data中执行此操作?在服务器上,我可以很容易地在我的索引

我可以使用Ember.js(rc0)和Rails,并拥有一个简单的应用程序,正如我所期望的那样工作,但我想专注于一个特定的故事:

作为一个用户,我想在表单中键入“过滤器”文本,然后让我的ArrayController只显示与过滤器匹配的项目。例如,想象一个联系人应用程序,它显示的人的名字像“Ya%”

警告:假设数据库中有数千条联系人记录。我不想在客户机上筛选这些联系人,在服务器上这样做更有意义

问题: 如何在ember.js/ember-data中执行此操作?在服务器上,我可以很容易地在我的索引URL中允许一个搜索参数来过滤数据,从而使其成为一个可管理的列表,甚至可以将响应限制为20个项目

我也可以使用视图来访问控制器中的过滤文本,但下一步该去哪里?如何将该筛选器传递到服务器上

更新:

我可以在模型对象上使用“find”,然后ember(ember数据)进入服务器获取新数据——因为客户端只有所有联系人记录的一个子集。它不会过滤客户机上的内容,而是自动延迟到服务器上。。。这很好

App.ContactIndexController = Ember.ArrayController.extend
 search_term: null
 submit: (view) ->
   this.set('content', App.Contact.find({search: "#{view.search_term}"}))

这是
findQuery
的一个很好的用例。例如:

store.findQuery(App.Contact, {q: queryString})
这将依次调用相应适配器上的
findQuery
,如果成功,将返回的记录加载到存储中并返回
DS.AdapterPopulatedRecordArray

请注意,您可以完全自定义查询对象,以包含与服务器端点匹配的参数


更新:正如Michael在评论中指出的,上述内容相当于:

App.Contact.find({q: queryString})

。。。这当然是一个更干净的解决方案,尤其是在没有直接访问商店的情况下。

Hmm-如何获得商店对象的句柄?例如,我想在用户定义文本过滤器后访问控制器中的信息……该api(findQuery)是否会在RC中消失?我能够在控制器上使用“find”,这又回到了服务器数据库:this.set('content',App.Contact.find({search:{view.search_term}]),在这里我在服务器控制器中支持一个搜索参数……感谢@MichaelGrassotti——这是现在调用findQuery的更传统的方式。我刚刚更新了我的答案。