在Ember.js中排序表

时间:2013-08-14 15:18:04

标签: javascript ember.js

我有一个用服务器数据生成的表。表格上的每一列都有一个顶部的按钮,根据该列中的值,将整个表格从高到低或从低到高排序。还有一个名称列按字母顺序排序。

目前,我已将所有这些与手柄联系起来,当您单击按钮时,它会对表数据数组进行排序,然后重新插入模板并将其插入到页面中。

我正试图将其转移到使用ember.js。我的第一个问题是我的table-data数组不再是一个简单的数组,它是一个包含各种get和set方法以及其他内容的ember对象。我怎样才能使用像我这样的函数对它进行排序:

function sortAtoZ(arr, one, two) {
    arr.sort(function(a, b) {return a[one].localeCompare(b[two])});
}

1 个答案:

答案 0 :(得分:1)

通过Sortable Mixin将对基本排序的支持内置到ember数组控制器中。开箱即用它支持使用Ember.compare按一个或多个属性进行排序,但可以使用自定义sortFunction,如:

App.TableController = Ember.ArrayController.extend({
  sortProperties: ['trackNumber'],
  sortAscending: true,
  sortFunction: function(a,b) {
    // your custom sort logic here
    // return 0 if the two parameters are equal, return a negative value if the first parameter is smaller than the second or return a positive value otherwise
  }
});

此外,如果您想对表格做更高级的事情,请查看ember-table