Я хотел бы иметь ng-repeat, отсортированный по значению в некоторой внешней таблице поиска.Ссылаясь на внешние переменные сферы в orderBy внутри ng-repeat
Например, предположим, что у меня есть список items
с itemType
за каждый товар. У меня есть отдельная таблица поиска itemTypePriorities
в области, так что itemTypePriorities[someItemType]
дает приоритет для данного типа элемента. Теперь я хотел бы отображать элементы в порядке их приоритетов. Я пытаюсь следующее:
<div ng-repeat="item in items | orderBy:'itemTypePriorities[item.itemType]'>
Но это, кажется, не работает - я думаю, что это интерпретации выражения OrderBy в контексте item
, т.е. он пытается сделать заказ на бессмысленные выражения item.itemTypePriorities[item.itemType]
.
Есть ли способ переписать нг-повтор, чтобы сделать его вками правильно, без необходимости изменения items
или itemTypePriorities
массивов в любом случае?
Спасибо - я нашел функцию решения, но я стараюсь, чтобы увидеть, если есть способ, чтобы избежать этого. (В моем фактическом прецеденте мне нужно отсортировать еще одно поле в дополнение к приоритету элемента, а функциональный подход не подходит для многопоточных сортировок) –
Я думаю, что функциональный подход чрезвычайно эффективен, потому что вы можете оценивать так много вещей для каждого элемента, единственное, что нужно вернуть, что-то, что представляет порядок элемента. На мой взгляд, я считаю, что решение функции длиннее, возможно, более сложное, но применимо для любой ситуации, даже в самом сложном случае. – Gianmarco
Предположим, вы хотите сортировать пользователей по ленте (2) по имени, (2) в тех же именах, которые вы хотите отсортировать по балансу банковского счета, и (3) если имя и баланс совпадают, сортировка по 'itemPriority' lookup как указано выше. Как бы выглядела ваша функция порядка сортировки? Я не убежден, что такая функция даже существует, особенно если баланс разрешен как произвольно большой и произвольно точный. Помните, что функция orderBy не передается 2 объектам и попросила их сравнить, но передается 1 объект и предлагается присвоить ей значение. Таким образом, функциональный подход ограничен, когда дело доходит до multifield. –