Select 菜单,用奇异值匹配 json 列表

Select menu, match json list with singular value

我有一个 JSON 美国各州的文件,名称和两个字母的代码通过 usStates

的 factory/controller 变量绑定到菜单
[
 {"name":"Alabama","code":"AL"},
 {"name":"Alaska","code":"AK"}, ...]

因此,我将其用于我的菜单:ng-options="s.code for s in id.usStates"

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

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

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

所以我尝试将此项目添加为我的 ng-model,

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

但后台数据中的值不是"linked",即不显示"AL"。所以,我假设我需要以某种方式更改我的语法,但我在这里感到困惑...... select 文档也有点混乱。

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

请参阅 ng-options here

的文档

您当前使用的"form"是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>

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

将您的 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>

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