Управление выбором страны для angularJs

Мне нужно использовать раскрывающийся список стран в моем приложении angular-breeze, и я попробовал следующее: https://github.com/banafederico/angularjs-country-select

Проблема здесь в том, что у него нет пары страна/код, только длинное название страны, которое я не хочу сохранять в БД. Есть ли какая-либо другая угловая директива/служба, которую я могу использовать для заполнения раскрывающегося списка странами? Я немного покопался, но не нашел готовой опции выбора страны для angular.


person devC    schedule 09.02.2015    source источник
comment
Я бы предложил создать свой собственный. Вы даже можете разветвить этот каталог и расширить его.   -  person Brian Noah    schedule 09.02.2015
comment
Мне было интересно, это кажется очень распространенной функцией, и, возможно, что-то уже есть, и я не изобретаю велосипед :)   -  person devC    schedule 09.02.2015
comment
Я вообще не люблю использовать чужой код. Часто это создает дополнительные проблемы. При этом может быть еще один, но если он не будет построен поверх существующего.   -  person Brian Noah    schedule 09.02.2015
comment
@ CHAT_2013 Чем раскрывающийся список стран отличается от любого другого раскрывающегося списка? В Angular есть select, ng-model и ng-options для создания раскрывающихся списков. Вам больше ничего не нужно.   -  person JB Nizet    schedule 09.02.2015
comment
@JB Nizet: я искал реализацию, которая также поставляется со списком стран, без необходимости определять список стран отдельно, как это предлагается в ответе ниже.   -  person devC    schedule 09.02.2015


Ответы (1)


Вы можете использовать директиву ng-repeat или ng-options и создать раскрывающийся список стран. Таким образом, у вас есть полный контроль. Вы можете создать директиву, если этот элемент используется во многих местах, если это необходимо.

Демо: http://plnkr.co/edit/2y9Jcektl8g2L0VoNQyp?p=preview

Использование директивы ng-option

<select ng-model="country" ng-options="country.name for country in countries track by country.code">
  <option value="">-- Select a Country --</option>
  </select>

Использование директивы ng-repeat:

<select ng-model="country">
    <option value="">-- Select a Country --</option>
    <option ng-repeat="country in countries" value="{{country.code}}">{{country.name}}</option>
</select>

Область стран в вашем контроллере:

    $scope.countries = [ 
        {name: 'Afghanistan', code: 'AF'},
        {name: 'Åland Islands', code: 'AX'},
        {name: 'Albania', code: 'AL'},
        {name: 'Algeria', code: 'DZ'},
        {name: 'American Samoa', code: 'AS'}
    ];
person Asik    schedule 09.02.2015
comment
@ CHAT_2013 Вот почему дублирование функций — это нормально. По сути, это список, который вы можете контролировать. и вы делаете простой цикл. Вы можете обернуть его директивой, если хотите. - person Brian Noah; 09.02.2015