如何对ViewModel的多个元素进行排序 - Knockout

时间:2013-06-26 20:17:54

标签: javascript sorting knockout.js typescript

我有一个viewmodel,我希望按两个单独的字段排序(ala a group a in SQL),首先按字母顺序排列一个字段,然后按第二个字段排序(也按字母顺序)。现在我只是按第二个字段排序。我在TypeScript中有一个排序函数,设置如下:

    private sortTable(item): any {
        item.sort(function (left, right) {
            return left.nm == right.nm? 0 : (left.nm < right.nm ? -1 : 1)
        });

        return item;
    }

我想要排序的字段(第一个字段)在JavaScript对象中称为fNm。任何人都可以帮助我吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

private sortTable(item): any {
    item.sort(function (left, right) {

         if (left.FirstSortField == right.FirstSortField)
            return left.SecondSortField== right.SecondSortField? 0 : (left.SecondSortField< right.SecondSortField? -1 : 1)
         else
            return left.FirstSortField == right.FirstSortField ? 0 : (left.FirstSortField < right.FirstSortField ? -1 : 1)

    return item;
}

请注意,我没有对此进行测试。

答案 1 :(得分:0)

通过思考,如果姓氏相同,则第一个名称仅影响排序。

将第一个表达式中的0替换为:

(left.fNm == right.fNm ? 0 : (left.fNm < right.fNm ? -1 : 1))