Значения в порядке выбора в алфавитном порядке - PullRequest
0 голосов
/ 14 декабря 2018

Я искал в Интернете и попробовал несколько решений, которые основаны на заказе, но, к сожалению, он не увенчался успехом.У меня есть выпадающий список, и я хотел бы, чтобы значения были в алфавитном порядке, поскольку у меня одно и то же имя, и поэтому я хотел бы, чтобы они были выше / ниже друг друга.Мой код следующий, и при этом он показывает метод orderBy:

<div class="col-lg-6 col-sm-6 col-xs-6">
    <!--reach-infinity="refreshUsers($select.search)"-->
    <ui-select ng-model="user.selected"
               ng-keyup="refreshUsers($select.search)"
               on-select="onUserLoginChange($select.selected)"
               ng-show="true"
               theme="bootstrap" style="min-width: 300px;">
        <ui-select-match class="ui-select-match"
                         placeholder="Enter user login">{{$select.selected.loginName}}</ui-select-match>
        <ui-select-choices class="ui-select-choices"
                           repeat="user in usersList track by $index | orderBy:'loginName'">
            <div ng-bind-html="user.loginName | highlight: $select.search"></div>
            <small>
                clientName: {{user.clientName}}
            </small>
            <div ng-if="$index == $select.items.length-1">
                <button
                        ng-if="!useNgMouseover"
                        class="btn btn-xs btn-blue"
                        style="width: 100%; margin-top: 5px;"
                        ng-click="loadMoreUsers($select, $event);"
                        ng-show="moreUsers"
                        ng-disabled="isLoading">Load more...
                </button>
            </div>
        </ui-select-choices>
    </ui-select>
    <span ng-show="userDetailsForm.$dirty && !userLoginFound" class="glyphicon glyphicon-remove form-control-feedback"></span>
</div>

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Вы также можете создать функцию в своей области и вызвать ее из атрибута повторения:

В контроллере:

$scope.orderByLoginName = function(userList) {
    // Order the list here
    return orderedList;
}

В html:

<ui-select-choices class="ui-select-choices"
                   repeat="user in orderByLoginName(usersList) track by $index">

РЕДАКТИРОВАТЬ:

Вот пример одного способа сортировки массива с помощью Array.prototype.sort():

$scope.orderByLoginName = function(userList) {
    return userList.sort(function(a, b){
        return a.loginName.localeCompare(b.loginName);
    })
}

См. этот пост для получения дополнительной информации об этом решении.

0 голосов
/ 14 декабря 2018

orderBy работает только с массивами, поэтому вы должны использовать его с объектом, поэтому я думаю, что вы должны использовать его с массивом.

Сначала создайте массив, а затем примените к нему orderBy.

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