Angular-ui-select – comment lier la propriété object à ng-model

J'utilise l'angular-ui-select dans un simple formulaire d'inscription d'utilisateur:

<ui-select ng-model="user.countryCode" convert-to-string theme="selectize" class="dropdown"> <ui-select-match placeholder="{{::strings('userDetails.countryPlaceholder')}}">{{$select.selected.name}} </ui-select-match> <ui-select-choices repeat="country in countries"> <span ng-bind-html="country.name | highlight: $select.search"></span> </ui-select-choices> </ui-select> 

Voici ma définition de tableau de pays:

 $scope.countries = [ {name: 'Afghanistan', code: 'AF'}, {name: 'Albania', code: 'AL'}, {name: 'Australia', code: 'AU'}, {name: 'Austria', code: 'AT'}, {name: 'Azerbaijan', code: 'AZ'}, {name: 'Belarus', code: 'BY'}, {name: 'Belgium', code: 'BE'}, {name: 'Belize', code: 'BZ'}, {name: 'Benin', code: 'BJ'} ]; 

Je crée l'objet utilisateur dans mon html, chaque champ possédait un modèle ng lié à certaines propriétés de l'utilisateur. Lorsque j'utilise une entrée simple comme FirstName, c'est facile:

 <input class="form-control" type="text" name="firstName" ng-model="user.firstName"/> 

Mais avec le menu déroulant – je souhaite que le nom du pays soit affiché dans les options de la liste déroulante et que son code soit placé dans l'objet utilisateur. Je veux éviter d'écrire le code dans le contrôleur pour cela. (C.-à-d. Scope.user.countryCode = $ scope.country.selected.code;)

Je pense que vous pouvez le faire:

 <ui-select-choices repeat="country.code as country in countries"> <span ng-bind-html="country.name | highlight: $select.search"></span> </ui-select-choices> 

À partir de la documentation: https://github.com/angular-ui/ui-select/wiki/ui-select-choices

Exemple: Reliure de la propriété individuelle

Dans la répétition de l'ui-select-choices, identifiez la propriété à laquelle vous souhaitez vous lier; repeat="item.id as item in cards"> .

Vous pouvez utiliser un filtre personnalisé pour transformer de manière transparente votre objet en un tableau:

https://code.angularjs.org/1.4.7/docs/error/filter/notarray

https://github.com/petebacondarwin/angular-toArrayFilter

 //in your view(aaa.html) part / <select ng-model="Choices" ng-options="choice.code as choice.name for choice in countries "> 

// dans votre fichier de contrôle $ scope.user.countryCode = "Choix";