根据定义的顺序对模型进行排序

时间:2015-07-14 23:34:45

标签: ember.js

所以我打算做的事情通常是严重而可怕的,但我必须处理我给出的数据。

我的调查问卷对所有用户都是一样的。它具有以下属性:id,name,required。在数据库中,名称字段按此顺序显示:

cell_phone
city
date_of_birth
email
first_name
graduation_year
last_name
phone
state
coach
name

此订单基于其ID。我需要它们以更直观的方式出现在页面上,即:

first_name
last_name
email
phone
city
state
zip
...

在我的路线中,我只是设置模型:

userId = App.Session.get("userId")
@store.find("questionnaire", userId: userId)

有没有办法映射从模型返回的数组,基本上硬编码这个顺序,或者在控制器中对模型进行排序,以匹配基于名称或索引的给定顺序?

1 个答案:

答案 0 :(得分:1)

您可以使用所需的顺序创建数组,然后按项目索引排序:

var order = [
    'first_name',
    'last_name',
    'email',
    'phone',
    'city',
    'state',
    'zip'
];

questions.sort(function(a, b) {
    return order.indexOf(a.name) - order.indexOf(b.name);
});

您可以将该逻辑放入计算属性中,或在find完成时映射数据