Есть ли способ иметь условную st-сортировку в смарт-таблице. Пример. У меня есть массив, который сообщает мне, что столбцы в моей таблице сортируются. Допустим, у моей таблицы есть столбцы [FirstName, LastName, Age, email], а мой массив сортировщиков - [firstName, age], что означает, что поля firstname и age являются sortabe. Как я могу достичь этого с помощью smart-talbe. Любая помощь высоко ценится! Благодарю!!
Я согласен, что это неловкий способ сделать, но то, как службы возвращают нам данные. Я попробовал следующий код и получил его работу (он сортирует столбцы firstname и age.), Хотя для меня это не очень чистый подход -
В моем HTML -
<thead>
<tr>
<th st-ratio="20" ng-attr-st-sort="sorters.getSorter('firstName')">first name</th> <!-- sortable rows -->
<th st-ratio="20" ng-attr-st-sort="sorters.getSorter('lastName')">last name</th>
<th st-ratio="10" ng-attr-st-sort="sorters.getSorter('age')">age</th>
<th st-ratio="30" ng-attr-st-sort="sorters.getSorter('email')">email</th>
<th st-ratio="20" ng-attr-st-sort="sorters.getSorter('balance')">balance</th>
</tr>
</thead>
enter code here
В моем js -
$scope.sorters = {
getSorter: function(prop){
return function(value){
var sortables = ['firstName', 'age'];
for(var i=0;i<sortables.length; i++){
if(sortables[i] === prop) {
return value[prop];
};
}
return undefined;
}
}
};
Хотя это решает мою проблему, мне не нравится этот подход. Есть ли лучший вариант для этого? PS - В конечном итоге я буду преобразовывать это в директиву, если у меня нет лучшего варианта.
Как смарт-таблица хочет, чтобы вы указывали, сортируется ли столбец или нет, с помощью директивы st-sort
в вашем <thead>
, он сообщает, какой столбец должен быть отсортирован по какому объекту, например:
<thead>
<tr>
<th st-sort="firstName">first name</th> <!-- sortable rows -->
<th st-sort="lastName">last name</th>
<th st-sort="age">age</th>
<th>email</th> <!-- not sortable -->
</tr>
</thead>
вы говорите, что у вас есть массив, который сообщает вашей таблице, какой столбец сортируется, а какой нет. На мой взгляд, это очень неудобный способ делать что-то в целом, и это не может быть сделано в ST.
Однако вы можете написать директиву, которая условно добавляет или удаляет st-sort
из вашей таблицы, используя значения из массива. но это будет просто беспорядок