Openui5:sap.ui.model.Sorter的排序顺序错误

时间:2016-02-05 08:28:33

标签: sapui5

看来sap.ui.model.Sorter没有正确排序ISO-8859-1字符。

下面是我们在挪威alfabet中创建一个带有一个项目pr字符的列表的示例。此输出的顺序不正确,而是顺序为“AÅÆBCDEFGHIJKLMNOØPQRSTUVWXYZ”。

预期结果与声明alfabet变量时的顺序相同:“ABCDEFGHIJKLMOPQRSTUVWXYZÆØÅ”

我们如何正确地对模型进行排序?

JSBIN:https://jsbin.com/xuyafu/

    var alfabet = "ABCDEFGHIJKLMOPQRSTUVWXYZÆØÅ"

var data = [];
for(var i=0; i< alfabet.length; i++){
  data.push ({value:alfabet.charAt(i)});
}

var modelList = new sap.ui.model.json.JSONModel(data);

sap.ui.getCore().setModel(modelList);

var oSorter = new sap.ui.model.Sorter("value", null, null);

       // Simple List in a Page
    new sap.m.App({
        pages: [
            new sap.m.Page({
                title: "Sorting with norwegian characters",
                content: [
                    new sap.m.List("list", {
                        items: {
                            path: '/',
                            template: new sap.m.StandardListItem({
                                title: '{value}'
                            }),
                            sorter: oSorter
                        }
                    })
                ]
            })
        ]
    }).placeAt("content");

Output from code above

1 个答案:

答案 0 :(得分:0)

根据对问题的评论的输入,可以直接覆盖排序函数fnCompare以获得正确的顺序

var oSorter = new sap.ui.model.Sorter("value", null, null);

oSorter.fnCompare   = function (a, b) {
        if (a == b) {
            return 0;
        }
        if (b == null) {
            return -1;
        }
        if (a == null) {
            return 1;
        }
        if (typeof a == "string" && typeof b == "string") {
            return a.localeCompare(b, "nb");
        }
        if (a < b) {
            return -1;
        }
        if (a > b) {
            return 1;
        }
        return 0;
    }

这里“nb”是使用

完成排序的语言环境