过滤Ember结果

时间:2013-02-26 19:01:10

标签: 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}"}))

1 个答案:

答案 0 :(得分:2)

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

store.findQuery(App.Contact, {q: queryString})

这将在适当的适配器上调用findQuery,如果成功,则将返回的记录加载到商店并返回DS.AdapterPopulatedRecordArray

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


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

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

...这当然是一种更清洁的解决方案,尤其是在没有直接进入商店的情况下。