对包含角度滤波器的uI网格列进行排序

时间:2016-10-05 07:35:21

标签: javascript angularjs sorting angular-ui-grid ui-grid

我最近开始使用Angular ui-grid。我不太熟悉图书馆的内部。

我有一个ui-grid列需要显示百分比。我将以下过滤条件添加到app,并将其与ui-grid cellFilter属性一起使用。

module.filter('percentage', function () {
    return function (input) {
        if (!input) {
            return '';
        } else {
            return input + '%';
        }
    };
})

这工作正常,但在对此列进行排序时。排序工作意外。假设我有3行值100,200,300。我希望它只能有两个排序状态100,200,300300,200,100。但是,如果我一直点击此列的标题,我会将第三个状态设为200, 300, 100100, 300,200。我甚至不确定这种状态的模式是什么。

如果我是对的,则角度过滤器仅适用于views,并且不会影响该字段的模型。所以我认为添加filter不会对排序产生影响。

除此之外,两个预期的排序(ASCENDING,DESCENDING)看起来很完美,唯一的问题是第三个出现。我该如何解决这个问题。

我错过了任何实现吗?请帮我解决这个问题。

编辑:字符串列也会出现此问题。根据我的理解,只考虑排序,只能有一个ASCENDING和一个DESCENDING状态。但是我得到了更多的安排。

1 个答案:

答案 0 :(得分:1)

您可以使用sortDirectionCycle删除第三种排序状态。

columnDefs: [
   { field: 'name', sortDirectionCycle: [uiGridConstants.ASC, uiGridConstants.DESC] },
   { field: 'gender', sortDirectionCycle: [uiGridConstants.ASC, uiGridConstants.DESC] },
   { field: 'company', enableSorting: false }
]

从文档中,单击列标题时,排序方向将循环升序,然后降序,然后返回未排序。您可以通过设置sortDirectionCycle columnDef选项重新排列此循环或跳过部分循环。有关详细信息,请查看此链接sortDirectionCycle