AngularJS: HTML选择使用map中的值,键按升序排列
AngularJS: HTML select to use values from map with ascending order on key
我有地图(双向)的状态。它由stateName和stateCode组成。它由以下HTML代码填充,但不能按stateCode或stateName升序进行过滤。
<div class="col-sm-2">
<select ng-model="location.stateCode" ng-change="loadDistricts();" ng-options="stateName for (stateCode, stateName) in stateOptions | orderBy:'stateCode'" class="form-control" id="state"></select>
</div>
//Json Object
stateOptions = {'MH':'Maharashtra','GJ':'Gujarat','MP':'Madhya Pradesh'};
您倒置了stateCode
和stateName
:
ng-options="stateName for (stateCode, stateName) in stateOptions"
另外,由于stateOptions
是一个对象,键将可能按字母顺序插入,这取决于js虚拟机。orderBy
过滤器在这里是没有意义的,因为(从文档中):
<根据表达式谓词对指定数组排序。字符串按字母顺序排列,数字按数字顺序排列
看到strong>小提琴
Edit:如果你想控制顺序,把你的结构重做一个数组:
$scope.stateOptions = [{
stateCode: 'MH',
stateName:'Maharashtra'
},{
stateCode: 'GJ',
stateName:'Gujarat'
},{
stateCode: 'MP',
stateName:'Madhya Pradesh'
}];
ng-options="state.stateName for state in stateOptions | orderBy: 'stateCode'"
参见更新后的小提琴
另一种方式
<select ng-model="location.stateCode" ng-change="loadDistricts();"
ng-options="stateName for (stateCode, stateName) in stateOptions | orderBy:'toString()' | filter:stateCode"
class="form-control" id="state">
如果我们不想重新构造对象,这也是一个很好的选择。首先根据键对映射对象进行排序,然后将其传递给ng-options。
$scope.stateOptions = sortObject($scope.stateOptions);
function sortObject(obj) {
return Object.keys(obj).sort().reduce(function (result, key) {
result[key] = obj[key];
return result;
}, {});}
相关文章:
- 如何删除多行HTML排列中的空白
- 重新排列HTML元素的顺序并更改内容
- 如何使用排列运算符来获取具有命名参数的函数的所有参数
- 从数组中删除重复条目,并在javascript中按顺序排列
- 使用CSS从下到上排列元素
- 我可以't在Divs中获得3个twitter小部件,以便并排排列
- Javascript从数组中随机选择并按字母顺序排列
- 如何在php中按元素按字母顺序排列json文件
- Javascript/jQuery:如何从数组的项中获取排列
- 如何在方向更改时重新调整/排列布局(Apache Cordova)
- 有没有比在本例中使用matchMedia更聪明的方法来重新排列页面元素
- 如何根据 js 中每个单词的第 n 个字母按字母顺序排列列表
- 响应式列表,可在浏览器缩小时重新排列
- Javascript将生日按数组顺序排列
- 重新排列 JavaScript 数组/对象
- 排列随机数 HTML 版本
- 我想重新排列我的数组和其他数组一样,这个数组是键和值
- 测试数字是否按升序排列 - 正则表达式
- AngularJS: HTML选择使用map中的值,键按升序排列
- 我有一个按降序排列的行图.我想把顺序改为升序.这是我的代码: