Я пытаюсь отсортировать массив, используя значения, возвращаемые фильтрами. При отладке я вижу, что фильтры не возвращают строки, но TrustedValueHolderType
... и поэтому сортировка не работает.
Я получаю такое же поведение, если использую нативный orderByFilter
вместо Array.prototype.sort
.
function orderFamilies(families) {
var ordered = families.sort(function(f1, f2) {
// f1, f2 are strings
// translateFamilyFilter is stateless
var f1Translated = translateFamilyFilter(f1);
// var f1Translated = translateFamilyFilter(f1).toString() works but I'm not sure if it's viable
var f2Translated = translateFamilyFilter(f2);
return f1Translated - f2Translated;
});
return ordered;
}
families = [ 'Security', 'Environment', 'Professional'];
translateFamily
- это пользовательский фильтр, который преобразует имя семейства в ключ перевода, затем использует $translate.instant
(поэтому здесь нет асинхронной операции).
Что я делаю не так?
Спасибо