角度选择和ng选项

mik*_*keb 9 javascript angularjs angularjs-ng-options angularjs-track-by

我有这个角度选择:

<select ng-model='obj.status' ng-options='status.code as (status.code + " " + status.phrase) for status in status_codes.data track by status.code'>`
Run Code Online (Sandbox Code Playgroud)

$scope.status_codes是这样的:

data: [
{
       "code":"100",
       "phrase":"...",
       "spec_title":"RFC7231#6.2",
       "spec_href":"http://tools.ietf.org/html/rfc7231#section-6.2"
}
...
]
Run Code Online (Sandbox Code Playgroud)

$scope.obj.status当我更改我的选择时,我的更新为"300"或"100"或其他任何内容,但选择的显示始终为空白.因此,模型更新为选择输入的选定值,但输入未显示当前选定的值,它显示空白项.

如果我改变ng-options是ng-options='status as (status.code ...'有效的,但我只想在我的模型中使用status.code,而不是整个状态数组.是什么赋予了?

{{obj | json }}在我的HTML和记载:

obj = {
  "name": "",
  "description": "",
  "payload": "",
  "status": "200",
  "responseHeaders": {
    "entry": [
      {
        "key": "",
        "value": ""
      },
      {
        "key": "",
        "value": ""
      }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

Ami*_*mit 6

删除曲目.

来自Docs:

在同一表达式中使用select as和track by时要小心.

我最好的猜测是as使用正常值,如"300",但track by使用的是类型值,如"int:300".删除一个或另一个应该这样做,最好是轨道.

他们以此为例:

这将有效:

<select ng-options="item as item.label for item in items track by item.id" ng-model="selected"></select>
Run Code Online (Sandbox Code Playgroud)

但这不起作用:

<select ng-options="item.subItem as item.label for item in items track by item.id" ng-model="selected"></select>
Run Code Online (Sandbox Code Playgroud)