我已经在网上搜索并尝试了一些依赖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>
答案 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。