我有一个用服务器数据生成的表。表格上的每一列都有一个顶部的按钮,根据该列中的值,将整个表格从高到低或从低到高排序。还有一个名称列按字母顺序排序。
目前,我已将所有这些与手柄联系起来,当您单击按钮时,它会对表数据数组进行排序,然后重新插入模板并将其插入到页面中。
我正试图将其转移到使用ember.js。我的第一个问题是我的table-data数组不再是一个简单的数组,它是一个包含各种get和set方法以及其他内容的ember对象。我怎样才能使用像我这样的函数对它进行排序:
function sortAtoZ(arr, one, two) {
arr.sort(function(a, b) {return a[one].localeCompare(b[two])});
}
答案 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