2013-09-14 3 views
1

Я пытаюсь загрузить угловой «выбрать» со следующим кодомangularjs: выбрать с различными (ключ, значение) не работает должным образом

<select class="span11" ng-model="user.countryOfResidence" ng-options="c.option as c.value for c in countries" required> 

его загружает данные в выбор, но выбранное значение по умолчанию пусто ,

моей страна массив

$scope.countries = [{option:'TL', value:'TIMOR-LESTE'}, 
{option:'TK', value:'TOKELAU'}, 
{option:'TJ', value:'TAJIKISTAN'}, 
{option:'TH', value:'THAILAND'}, 
{option:'TG', value:'TOGO'},]; 

если я изменить 'TL' к 'TIMOR-LESTE' (тому же строке для «варианты» и «значения») он работает отлично. Может ли кто-нибудь сказать мне, в чем проблема с моим кодом.

объект пользователя

$scope.user = { 

     countryOfResidence : $scope.countries[0].value 

    }; 
+2

Initialize '$ scope.user.countryOfResidence = $ scope.countries [0 ] .option', потому что вы используете параметры в качестве значений внутри ng-option. – AlwaysALearner

+0

Большое вам спасибо, это работает – Shahzeb

ответ

2

A Выберите заполняются нг-вариантами будет установить нг-модель поле к тому, что указано в качестве значения , а не варианта

В примере вы указали, что вы устанавливаете user.countryOfResidence в страны [0] .value, что в данном случае является «TIMOR-LESTE», но ключ значения - «TL», поэтому он не будет выбирать его по умолчанию.

Для лучшей читаемости, я всегда хотел, чтобы структурировать мои выбора опций с 'ярлыком' и ключи 'значение', например, так:

// Controller 

$scope.countries = [ 
    {value:'TL', label:'TIMOR-LESTE'}, 
    {value:'TK', label:'TOKELAU'}, 
    {value:'TJ', label:'TAJIKISTAN'}, 
    {value:'TH', label:'THAILAND'}, 
    {value:'TG', label:'TOGO'} 
]; 

$scope.user = { 
     countryOfResidence: $scope.countries[0].value 
    }; 
}; 

// View 

<select class="span11" ng-model="user.countryOfResidence" ng-options="c.value as c.label for c in countries" required=""></select> 
Смежные вопросы