Я использую Backgrid. Я обнаружил, что один из моих столбцов имеет «неопределенное» значение. Сортировка по фоновой сетке работает неправильно, если в столбце есть значение undefined. Я посмотрел исходный код.
onClick: функция (e) { e.preventDefault();
var columnName = this.column.get("name");
if (this.column.get("sortable")) {
if (this.direction() === "ascending") {
this.sort(columnName, "descending", function (left, right) {
var leftVal = left.get(columnName);
var rightVal = right.get(columnName);
if (leftVal === rightVal) {
return 0;
}
else if (leftVal > rightVal) { return -1; }
return 1;
});
}
else if (this.direction() === "descending") {
this.sort(columnName, null);
}
else {
this.sort(columnName, "ascending", function (left, right) {
var leftVal = left.get(columnName);
var rightVal = right.get(columnName);
if (leftVal === rightVal) {
return 0;
}
else if (leftVal < rightVal) { return -1; }
return 1;
});
}
}
},
Я изменил код на следующий, и сортировка работает правильно (предположим, что undefined меньше любого значения):
onClick: функция (e) { e.preventDefault();
var columnName = this.column.get("name");
if (this.column.get("sortable")) {
if (this.direction() === "ascending") {
this.sort(columnName, "descending", function (left, right) {
var leftVal = left.get(columnName);
var rightVal = right.get(columnName);
if (leftVal === undefined && rightVal != undefined) {
return 1;
}
if (leftVal != undefined && rightVal === undefined) {
return -1;
}
if (leftVal === rightVal) {
return 0;
}
else if (leftVal > rightVal) { return -1; }
return 1;
});
}
else if (this.direction() === "descending") {
this.sort(columnName, null);
}
else {
this.sort(columnName, "ascending", function (left, right) {
var leftVal = left.get(columnName);
var rightVal = right.get(columnName);
if (leftVal === undefined && rightVal != undefined) {
return -1;
}
if (leftVal != undefined && rightVal === undefined) {
return 1;
}
if (leftVal === rightVal) {
return 0;
}
else if (leftVal < rightVal) { return -1; }
return 1;
});
}
}
},
Есть ли другой способ справиться с неопределенным значением при сортировке? Спасибо!