javascript - AngularJS:HTML 选择使用 map 中的值并按键升序排列

标签 javascript angularjs

我有州 map (双向)。由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'};

最佳答案

您颠倒了 stateCodestateName:

ng-options="stateName for (stateCode, stateName) in stateOptions"

此外,由于 stateOptions 是一个对象,因此键可能会按字母顺序插入,具体取决于 js 虚拟机。 orderBy 过滤器在这里毫无意义,因为(来自 documentation ):

Orders a specified array by the expression predicate. It is ordered alphabetically for strings and numerically for numbers

参见fiddle

<小时/>

编辑:如果您想确实控制顺序,请将您的结构重新设计为数组:

$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'"

参见updated fiddle

关于javascript - AngularJS:HTML 选择使用 map 中的值并按键升序排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33054174/

相关文章:

javascript - React - 渲染组件如何工作

javascript - 模型更新后 AngularJS View 不更新

javascript - AngularJS 通过源标签动态加载普通的旧 Javascript

javascript - 添加 office.js 禁用 html5mode

javascript - 导航到新页面不会滚动到顶部

javascript - AngularJS 动态表单与 ng-repeat

php - 多复选框,可以选中所有和取消选中所有

php - 设计多人游戏(连接两个玩家)

javascript - jQuery 自动完成 : How to disallow free text, 并显示必须从列表中选择项目的错误?

javascript - 有没有办法在变量达到某个数字时激活函数?