2017-10-12 26 views
0

我想过滤然后对我的余烬记录进行排序,以便首先返回列的空记录。我不太熟悉余烬,并有一个轨道回地面。Ember对我的记录进行排序,以便首先重新调用列的空值

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'),但我不知道对于相同的灰烬

任何帮助将不胜感激。在此先感谢。

P.S:我会尝试创造一个烬宝,同时更好地解释自己。

回答

1

虽然可以求助于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'), 
1

我通过使用Ember.SortableMixin而不是sortBy解决了我的问题。我结束了下面的代码,这完全适合我。

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

我不确定或不知道为什么这工作,并在一定程度上,我可以解释这种行为的基础知识。如果任何人有任何相同的解释,请随时将您的答案放在下面,我会接受它作为答案。

感谢

相关问题