选择选项中的值按字母顺序排列

时间:2018-12-14 10:35:29

标签: javascript html angularjs

我已经在网上搜索并尝试了一些依赖orderBy的解决方案,但不幸的是,它并没有成功。我有一个下拉框,希望这些值按字母顺序排列,因为我具有相同的名称,因此希望它们位于上方/下方。我的代码如下,它显示了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 :(得分:0)

orderBy仅适用于数组,因此您必须将其与对象一起使用,所以我认为您应该在数组上使用它。

首先创建一个数组,然后在其上应用orderBy。

答案 1 :(得分:0)

您还可以在范围内创建一个函数,然后从repeat属性中调用它:

在控制器中:

Foo<Boolean> booleanFoo = Foo.ofBoolean();
Foo<Integer> integerFoo = Foo.ofInteger();

在html中:

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

编辑:

以下是使用<ui-select-choices class="ui-select-choices" repeat="user in orderByLoginName(usersList) track by $index"> 对数组进行排序的一种方法的示例:

Array.prototype.sort()

有关此解决方案的更多信息,请参见this post