余烬 对我的记录进行排序,以便首先重新调整列的 null



我想过滤然后排序我的余烬记录,以便首先返回列的空记录。我对余烬不太熟悉,并且有一个轨道背景。

filteredByData = myLeads.filterBy('status', 'open').filterBy('doNotCall', false).filterBy('phoneValid', true)
filtered = filteredByData.sortBy 'last_dialed_at', 'last_name', 'first_name', 'id'

现在,我的记录是根据 id 排序的。

我想要的是在任何查询中实现来自 sql 或 postgres 的NULLS LAST/FIRST(例如在我的排序中SELECT * FROM t1 ORDER BY c1 DESC NULLS FIRST,以便我获得记录,以便首先出现last_dialed_at空记录。

我知道同样可以在轨道中实现,例如

Foo.order('last_dialed_at DESC NULLS FIRST')但我不知道余烬中也是如此

任何帮助将不胜感激。提前谢谢。

PS:我会尝试创建一个余烬,同时更好地解释自己。

虽然你可以求助于SortableMixin/ArrayProxy,但这些是比你真正需要使用的较低级别的API。 sortBy适用于单个值,但是当我需要对多个内容进行排序时,我通常会使用computed.sort。看看这个答案中的代码和链接 https://stackoverflow.com/a/46788377/334913 他们应该让你开始。

Ember建议的常见方法之一是为每个步骤(或一组步骤)执行计算属性,因为它使推理变得更加容易。

所以我会做一些类似的事情:

filteredLeads: Ember.computed('leads', function() {
  return filteredResultsHere;
}),
sortDefinition: [], // put your entries from your SortableMixin here
sortedFilteredLeads: Ember.computed.sort('filteredLeads', 'sortDefinition'),

我通过使用Ember.SortableMixin而不是sortBy解决了我的问题。我最终得到了以下代码,这对我来说非常有效。

leads = Ember.ArrayProxy.createWithMixins Ember.SortableMixin, content: filteredByData, sortProperties: ['lastDialedAt', 'firstName', 'lastName', 'id'], sortAscending: true

我不确定或不太清楚为什么这有效,以及我可以在一定程度上解释这种行为的基本原理。如果有人对此有任何解释,请随时将您的答案放在下面,我会接受它作为答案。

谢谢

相关内容

  • 没有找到相关文章

最新更新