看来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");
答案 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”是使用
完成排序的语言环境