Ember 对我的记录进行排序,以便首先重新调整列的空值
Ember Sort my Records so the null for a column are retuned first
我想过滤然后排序我的 ember 记录,以便首先返回列的空记录。我对 ember 不太熟悉并且有 rails 背景。
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
(例如我排序中的 s SELECT * FROM t1 ORDER BY c1 DESC NULLS FIRST
,所以我得到这样的记录 last_dialed_at
空记录优先。
我知道同样可以在 rails 中实现,比如
Foo.order('last_dialed_at DESC NULLS FIRST')
但我不知道 Ember
如有任何帮助,我们将不胜感激。提前致谢。
P.S:我会尝试创造一个 ember 旋转来更好地解释我自己。
我使用 Ember.SortableMixin
而不是 sortBy
解决了我的问题。我最终得到了以下代码,这对我来说非常有效。
leads = Ember.ArrayProxy.createWithMixins Ember.SortableMixin, content: filteredByData, sortProperties: ['lastDialedAt', 'firstName', 'lastName', 'id'], sortAscending: true
我不确定或不太清楚为什么这有效以及我可以解释这种行为的基本原理。如果任何人对此有任何解释,请随时将您的答案放在下面,我会接受它作为答案。
谢谢
尽管您可以求助于 SortableMixin/ArrayProxy,但这些 API 的级别较低,您真正不需要使用。 sortBy
适用于单个值,但我通常在需要对多个事物进行排序时使用 computed.sort
。查看此答案 中的代码和 link 它们应该可以帮助您。
Ember 建议的一种常见方法是为每个步骤(或一组步骤)计算属性,因为这样更容易推理。
所以我会按照以下方式做一些事情:
filteredLeads: Ember.computed('leads', function() {
return filteredResultsHere;
}),
sortDefinition: [], // put your entries from your SortableMixin here
sortedFilteredLeads: Ember.computed.sort('filteredLeads', 'sortDefinition'),
我想过滤然后排序我的 ember 记录,以便首先返回列的空记录。我对 ember 不太熟悉并且有 rails 背景。
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
(例如我排序中的 s SELECT * FROM t1 ORDER BY c1 DESC NULLS FIRST
,所以我得到这样的记录 last_dialed_at
空记录优先。
我知道同样可以在 rails 中实现,比如
Foo.order('last_dialed_at DESC NULLS FIRST')
但我不知道 Ember
如有任何帮助,我们将不胜感激。提前致谢。
P.S:我会尝试创造一个 ember 旋转来更好地解释我自己。
我使用 Ember.SortableMixin
而不是 sortBy
解决了我的问题。我最终得到了以下代码,这对我来说非常有效。
leads = Ember.ArrayProxy.createWithMixins Ember.SortableMixin, content: filteredByData, sortProperties: ['lastDialedAt', 'firstName', 'lastName', 'id'], sortAscending: true
我不确定或不太清楚为什么这有效以及我可以解释这种行为的基本原理。如果任何人对此有任何解释,请随时将您的答案放在下面,我会接受它作为答案。
谢谢
尽管您可以求助于 SortableMixin/ArrayProxy,但这些 API 的级别较低,您真正不需要使用。 sortBy
适用于单个值,但我通常在需要对多个事物进行排序时使用 computed.sort
。查看此答案
Ember 建议的一种常见方法是为每个步骤(或一组步骤)计算属性,因为这样更容易推理。
所以我会按照以下方式做一些事情:
filteredLeads: Ember.computed('leads', function() {
return filteredResultsHere;
}),
sortDefinition: [], // put your entries from your SortableMixin here
sortedFilteredLeads: Ember.computed.sort('filteredLeads', 'sortDefinition'),