У меня есть следующий раскрывающийся список в шаблоне html.
<div class="row">
<label class="text-label hint--top-right hint--large" data-hint="{{customer.config.METHOD.DESCRIPTION}}">Calculation Method</label>
<div class="input-select">
<select class="input-select__select" ng-model="customer.attributes.tradingParameters.method">
<option ng-repeat="indicator in customer.config.METHOD.VALUE" ng-selected="customer.attributes.tradingParameters.method == customer.shortenIndicator(indicator)" ng-value="customer.shortenIndicator(indicator)">{{indicator}}</option>
</select>
</div>
</div>
Я использую ng-repeat для создания раскрывающегося списка из файла конфигурации CONSTANT. Ниже находится файл конфигурации.
vm.config = {
'METHOD': {
'VALUE': ['N - No', 'Y- Yes'],
'Description': 'Some description while hovering over'
}
}
При правильном ответе я назначаю объект ответа с индикаторами свойству atrributes в контроллере. А затем с помощью ng-модели выбрать подходящее значение. Как бы то ни было, сервер отправляет только однобуквенный индикатор, а в раскрывающемся списке я ДОЛЖЕН иметь индикатор с каким-то описанием, например «N - Нет».
Поэтому я добавил выражение ng-selected, которое сравнивает индикатор, возвращаемый с сервера, с укороченной версией. Укороченная версия создается путем вызова метода shortenIndicator в контроллере, который объединяет индикатор при первом появлении пробела.
vm.shortenIndicator = function(fullIndicatorValue){
return fullIndicatorValue.slice(0, fullIndicatorValue.indexOf(' '));
};
Так что это довольно странное поведение, когда только первый вариант в раскрывающемся списке не выбирается, когда он возвращается с сервера. Однако, если сервер отправляет второй или третий вариант, он будет выбран.