Использование фильтра AngularJS в Array.prototype.sort не работает - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь отсортировать массив, используя значения, возвращаемые фильтрами. При отладке я вижу, что фильтры не возвращают строки, но 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 (поэтому здесь нет асинхронной операции).

Что я делаю не так?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...