2017-10-12 15 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 

我不確定或不知道爲什麼這工作,並在一定程度上,我可以解釋這種行爲的基礎知識。如果任何人有任何相同的解釋,請隨時將您的答案放在下面,我會接受它作爲答案。

感謝

相關問題