Angularjs orderBy无法使用键、值对正常工作

Angularjs orderBy无法使用键、值对正常工作,angularjs,Angularjs,我正在提取美国各州的JSON及其关键代码,其中关键是州代码,如NY,值是州名,如纽约。在下拉列表中,即使在执行了orderBy:value(我也尝试了'value')之后,我仍然无法按照值的字母顺序对其排序。由于某种原因,它总是按键排序 正因为如此,像optionNorth Carolina出现在Nebraska之前这样的错误正在发生 在这里重现问题: var myApp=angular.module('myApp',[]); 控制器('MyCtrl',['$scope',函数($scope)

我正在提取美国各州的JSON及其关键代码,其中
关键
是州代码,如
NY
是州名,如
纽约
。在
下拉列表中,即使在执行了
orderBy:value
(我也尝试了
'value'
)之后,我仍然无法按照
值的字母顺序对其排序。由于某种原因,它总是按
排序

正因为如此,像option
North Carolina
出现在
Nebraska
之前这样的错误正在发生

在这里重现问题:

var myApp=angular.module('myApp',[]);
控制器('MyCtrl',['$scope',函数($scope){
风险值数据={
“下拉列表”:{
“国际扶轮”:“罗德岛”,
“嗨”:“夏威夷”,
“纽约”:“纽约”,
“GA”:“格鲁吉亚”,
“内华达州”:“内华达州”,
“田纳西州”:“田纳西州”,
“加州”:“加州”,
“OK”:“俄克拉何马州”,
“我”:“缅因州”,
“弗吉尼亚州”:“弗吉尼亚州”,
“密歇根州”:“密歇根州”,
“哦”:“俄亥俄州”,
“德”:“特拉华”,
“ID”:“爱达荷州”,
“佛罗里达州”:“佛罗里达州”,
“IA”:“爱荷华州”,
“MD”:“马里兰”,
“MA”:“马萨诸塞州”,
“南卡罗来纳州”,
“AR”:“阿肯色州”,
“犹他州”:“犹他州”,
“伊利诺伊州”:“伊利诺伊州”,
“IN”:“印第安纳”,
“CT”:“康涅狄格州”,
“DC”:“哥伦比亚特区”,
“明尼苏达州”:“明尼苏达州”,
“肯塔基州”:“肯塔基州”,
“威斯康星州”,
“AZ”:“亚利桑那州”,
“密苏里州”,
“堪萨斯州”:“堪萨斯州”,
“或”:“俄勒冈州”,
“MS”:“密西西比”,
“洛杉矶”:“路易斯安那州”,
“NH”:“新罕布什尔州”,
“华盛顿”,
“新泽西州”:“新泽西州”,
“新墨西哥州”:“新墨西哥州”,
“AK”:“阿拉斯加”,
“德克萨斯州”:“德克萨斯州”,
“AL”:“阿拉巴马州”,
“CO”:“科罗拉多”,
“宾夕法尼亚州”:“宾夕法尼亚州”,
“北卡罗来纳州”:“北卡罗来纳州”,
“NE”:“内布拉斯加州”
}
};
$scope.retailStates=data.dropdowns;
}]);

JS-Bin
挑选
{{value}}

传递给orderBy的参数需要与对象数组中的属性名称相匹配这意味着您的数据需要更改为如下所示

$scope.retailStates = [ { stateCode:"RI", stateName:"Rhode Island"},
                        { stateCode:"HI", stateName:"Hawaii"}
                      ];
等等

这会将您的ng repeat更改为

ng-repeat="retailStates in retailStates | orderBy: stateName"

Angular团队表示,不建议在对象的关键点上使用ng repeat。最简单的解决方案可能只是将对象转换为数组

var myApp=angular.module('myApp',[]);
控制器('MyCtrl',['$scope',函数($scope){
风险值数据={
“下拉列表”:{
“国际扶轮”:“罗德岛”,
“嗨”:“夏威夷”,
“纽约”:“纽约”,
“GA”:“格鲁吉亚”,
“内华达州”:“内华达州”,
“田纳西州”:“田纳西州”,
“加州”:“加州”,
“OK”:“俄克拉何马州”,
“我”:“缅因州”,
“弗吉尼亚州”:“弗吉尼亚州”,
“密歇根州”:“密歇根州”,
“哦”:“俄亥俄州”,
“德”:“特拉华”,
“ID”:“爱达荷州”,
“佛罗里达州”:“佛罗里达州”,
“IA”:“爱荷华州”,
“MD”:“马里兰”,
“MA”:“马萨诸塞州”,
“南卡罗来纳州”,
“AR”:“阿肯色州”,
“犹他州”:“犹他州”,
“伊利诺伊州”:“伊利诺伊州”,
“IN”:“印第安纳”,
“CT”:“康涅狄格州”,
“DC”:“哥伦比亚特区”,
“明尼苏达州”:“明尼苏达州”,
“肯塔基州”:“肯塔基州”,
“威斯康星州”,
“AZ”:“亚利桑那州”,
“密苏里州”,
“堪萨斯州”:“堪萨斯州”,
“或”:“俄勒冈州”,
“MS”:“密西西比”,
“洛杉矶”:“路易斯安那州”,
“NH”:“新罕布什尔州”,
“华盛顿”,
“新泽西州”:“新泽西州”,
“新墨西哥州”:“新墨西哥州”,
“AK”:“阿拉斯加”,
“德克萨斯州”:“德克萨斯州”,
“AL”:“阿拉巴马州”,
“CO”:“科罗拉多”,
“宾夕法尼亚州”:“宾夕法尼亚州”,
“北卡罗来纳州”:“北卡罗来纳州”,
“NE”:“内布拉斯加州”
}
};
$scope.retailStates=[];
for(数据中的var键。下拉列表){
$scope.retailStates.push({“key”:key,“value”:data.dropdowns[key]});
}
}]);

JS-Bin
挑选
{{state.value}}