0

我最近开始使用 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 状态。但我得到了更多的安排。

4

1 回答 1

1

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

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

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

于 2016-10-05T09:41:53.920 回答