我正在使用 ng-options="ref as display for (ref, display) in
语法将非数组对象显示为下拉列表,但在排序下拉值时遇到问题。
我应该如何使用orderBy
过滤器按 display
对此下拉列表进行排序值?
<div ng-controller="MyCtrl">
<select name="category" type="text" ng-model="categories " ng-options="ref as display
for (ref, display) in categories | orderBy:'display'" >
</div>
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
$scope.categories = {
cat2: "Category 2",
default: "anone",
zone: "zone",
};
}
最佳答案
Orderby 不能应用于普通对象,或者您可以在 Controller 中定义一个方法将对象转换为数组
演示
var myApp = angular.module('myApp',[]);
myApp.controller('myCtrl', function($scope) {
$scope.categories = {
cat2: "Category 2",
default: "anone",
zone: "zone",
};
$scope.templatesAry = function() {
var ary = [];
angular.forEach($scope.categories, function(val, key)
{
ary.push({
"category": val
});
});
return ary;
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
<select class="form-control" id="selection" ng-model="currentSelected" ng-options="selection.category as selection.category for selection in templatesAry() | orderBy:'category'"></select>
</div>
关于AngularJS,使用非数组模型命令文本选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45310937/