如何在提供给模板之前对模型数组进行排序

How to sort the model array before supply to template

这是我的模型,在发送到模板之前如何排序?

route.js

import Ember from 'ember';

export default Ember.Route.extend({
  model(){
    return {
            "fruits":[
            {fruit:"mango",color:"yello"},
            {fruit:"banana",color:"muddy yellow"},
            {fruit:"apple",color:"red"}],
          "prices":[9, 10,5 ]
                }
   } 
});

Twiddle Demo

有人更新我的玩笑吗?正在寻找 ember 方法。

这是我的 hbs:

<h1>Fruit Prices Sorted here</h1> 
<ul>
{{#each sortedSongs as |price|}}
    <li> {{price.fruit}}</li>
{{/each}}
</ul>

<h1>Fruit Prices Sorted here</h1> 
<ul>
{{#each sortedPrice as |price|}}
    <li> {{price.price}}</li>
{{/each}}
</ul>

<h1>Fruit Details Sorted by Alphabetically </h1> 
<ul>
{{#each model.fruits as |fruitObject|}}
    <li> {{fruitObject.fruit}}</li>
{{/each}}
</ul>
<br>
<h1>Fruit Color Sorted by Alphabetically </h1> 
<ul>
{{#each model.fruits as |fruitObject|}}
    <li> {{fruitObject.color}}</li>
{{/each}}
</ul>

查看 Ember.computed.sort

在你的旋转中,你应该在控制器中创建一个计算的 属性,它将对 model.fruits 和 return 结果进行排序,例如:

nameSort: ['name'],
sortedByName: Ember.computed.sort('model.fruits', 'nameSort')

第二个参数必须是 属性 的名称,其中包含您要作为排序依据的属性数组。或者,如果您需要一些自定义排序逻辑,您可以提供一个函数。

我已经编辑了你的胡扯。另外我认为价格属性应该放在每个水果对象中,而不是在单独的列表中,所以我移动了它。

https://ember-twiddle.com/78e0b3e9ff873a8909221efc87e3ef43

虽然下次做一些研究,Ember.computed.sort 文档并不难找到。