Угловой отбор и нг-опции
У меня есть этот угловой выбор:
<select ng-model='obj.status' ng-options='status.code as (status.code + " " + status.phrase) for status in status_codes.data track by status.code'>`
мой $scope.status_codes
это так:
data: [
{
"code":"100",
"phrase":"...",
"spec_title":"RFC7231#6.2",
"spec_href":"http://tools.ietf.org/html/rfc7231#section-6.2"
}
...
]
мой $scope.obj.status
обновляется до "300" или "100" или чего-либо еще, когда я меняю свой выбор, но дисплей выбора всегда пуст. Таким образом, модель обновляется до выбранного значения выбранного входа, но на входе не отображается текущее выбранное значение, а отображается пустой элемент.
Если я изменю ng-параметры, чтобы быть ng-options='status as (status.code ...'
это работает, но я хочу только status.code в моей модели, а не весь массив status. Что дает?
я имею {{obj | json }}
в моем HTML, и это гласит:
obj = {
"name": "",
"description": "",
"payload": "",
"status": "200",
"responseHeaders": {
"entry": [
{
"key": "",
"value": ""
},
{
"key": "",
"value": ""
}
]
}
}
2 ответа
Удалить трек по.
Из документов:
Будьте внимательны при использовании select as и track by в одном выражении.
Мое лучшее предположение заключается в том, что as использует нормальное значение, например "300", но для отслеживания используется типизированное значение, например "int:300". Удаление того или другого должно сделать это, желательно трек.
Они приводят это в качестве примера:
Это будет работать:
<select ng-options="item as item.label for item in items track by item.id" ng-model="selected"></select>
но это не сработает
<select ng-options="item.subItem as item.label for item in items track by item.id" ng-model="selected"></select>
Согласно документации здесь: https://docs.angularjs.org/api/ng/directive/ngOptions:
select as label for value in array
Так что в вашем примере это должно работать (вы получите значение кода в качестве значения выбора в модели):
status.code as (status.code + " " + status.phrase) for status in status_codes.data
track by
должен использоваться, когда у вас есть объект в качестве значения в модели, массив объектов для опций и вы хотите сопоставить текущее значение модели с одним из объектов в массиве.