选择菜单,将json列表与单数值进行匹配

Select menu, match json list with singular value

本文关键字:单数值 列表 菜单 json 选择      更新时间:2023-09-26

我有一个美国各州的JSON文件,名称和两个字母的代码通过usStates 的工厂/控制器变量绑定到菜单

[
 {"name":"Alabama","code":"AL"},
 {"name":"Alaska","code":"AK"}, ...]

所以,我用这个作为菜单:ng-options="s.code for s in id.usStates"

工作正常,显示我的状态。

后端开发人员给了我应该链接的JSON,他有这样的值:

"subCity": "",
"cityTown": "Selma",
"stateProvince": "AL",
"postalCode": "000000",
"zip4": "",
"countryCode": "US"

所以我试着添加这个项目作为我的ng模型,

<select ng-model="id.partner.partnerAddressInfo.stateProvince" ng-options="s.code for s in id.usStates"></select>

但它与后端数据中的值没有"链接",即它不显示"AL"。所以,我想我需要以某种方式改变我的语法,但我在这里很困惑。。。select文档也有点令人困惑。

我创建了一个简化的Plunker来显示这种情况:http://plnkr.co/edit/vvbbiiFprwNiTJTgWlR3?p=preview

如果我没有错,并且理解你的问题,那么你正在寻找这个解决方案。

将您的html更改为

 <select class="form-control" ng-model="selected" ng-init="selected=partner.partnerAddressInfo.stateProvince" ng-options="s.code as s.name for s in usStates"></select>

如果我是对的,请告诉我。

请参阅此处的ng-options文档

您当前使用的"表单"是label for value in arrray

您需要的是select as label for value in array,其中select将表达式结果绑定到模型
如果您没有提供select表达式,那么它将默认为value

因此,您需要将语法更改为-

<select ng-model="id.partner.partnerAddressInfo.stateProvince"
        ng-options="s.code for s.code for s in id.usStates">
</select>