- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想按日期对 Ember 模型数组进行排序,但似乎所有旧文档都与 Controller 内部的排序相关。在这种情况下,当我在路径中获取模型时,我需要对该数组进行排序,以便我可以将其发送到服务以对其执行操作。
我有两个模型:站点和航类。
所以我有一个对象站点,其构造函数是 myApp@model:site
我想获取与该站点相关的航类对象数组,其中有许多按日期排序的配置。
我的尝试是:
var Flights = site.get('flights').sortBy('executeAt:desc');
我注意到的一件奇怪的事情是,如果没有“:desc”,它默认为升序
var Flights = site.get('flights').sortBy('executeAt');
-> 升序
但是冒号后面的值不会影响任何内容
var Flights = site.get('flights').sortBy('executeAt:');
-> 降序或者``var Flights = site.get('flights').sortBy('executeAt:asc');` -> 降序
在某些情况下,它会完全搞乱排序并给我提供未排序的数据。
供引用,日期格式为:2015-09-03T13:34:33.000Z
那么获取这些数据的排序列表的最佳方法是什么?
最佳答案
最好的选择是使用Ember.compulated.sort
。以下是 API 文档:http://emberjs.com/api/classes/Ember.computed.html#method_sort
示例:
// components/site-widget.js
export default Ember.Component.extend({
// The site model
site: null,
// List of flights
flights: Ember.computed.alias('site.flights'),
// Flights sorted in order
sortedFlights: Ember.computed.sort('flights', '_flightSorting')
_flightSorting: ['executeAt:desc']
});
用法:
// templates/sites.hbs
{{#each sites as |site|}}
{{site-widget site=site}}
{{/each}}
在这种情况下,_flightStoring
属性实际上是可观察的并且是可变的。更改其值也会更改排序顺序。
如果您想进行自己的自定义排序,可以将其用作 a/b 函数。例如:
export default Ember.Component.extend({
/* ... */
sortedFlights: Ember.computed.sort('flights', function(a, b) {
return a.executeAt > b.executeAt;
})
});
<小时/>
我想借此机会厚颜无耻地将我的 Ember 插件插入 Ember.compulated.sortBy
。如果您不需要可变排序,我建议您检查一下。 https://github.com/workmanw/ember-computed-sortby
我还有一个开放的 RFC,希望它能被 Ember 核心采用。 https://github.com/emberjs/rfcs/pull/87
<小时/>更新:我创建了一个 Ember Twiddle 来帮助演示整个事情:http://ember-twiddle.com/60efa60e191fa9026774
我在构建这个应用程序时可能有点得意忘形了。但与您的问题相关的文件是“components/flight-list.js”和“templates/components/site.hbs”。
关于ember.js - Ember : What is the non controller way to sort an array of models,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33308936/
我是一名优秀的程序员,十分优秀!