J'utilise ng-repeat pour afficher les options avec une valeur et un texte différents, et définir le paramètre par défaut. Mais encore une fois angular ajoute une option vide non définie.
<select ng-model="newItem.financial_year_id" required style="min-width:180px;">
<option ng-repeat="financial in account_year" value="{{financial.id}}" ng-selected="financial.status=='Active'">{{financial.financial_year}}</option>
</select>
Maintenant, l'actif est sélectionné mais l'option vide restitue.
Essayez plutôt ng-options
:
<select ng-model="selectedFinancial" ng-options="c.financial_year for c in account_year"
required style="min-width:180px;">
</select>
Vous devriez penser à redéfinir votre modèle comme cela pour utiliser ng-options
. Lorsque nous utilisons <select>
, il n'y a qu'un élément sélectionné et cet élément doit être une propriété de $scope
référençant un élément de la liste => nous n'avons pas besoin de dupliquer une propriété supplémentaire avec "active"
et "inactive"
pour tous les objets.
La conception de votre modèle actuel est logique lorsqu'il y a plus d'un élément sélectionné, mais s'il en existe plus d'un, nous devrions utiliser une liste de cases à cocher au lieu de <select>
Si vous voulez lier avec Id, essayez ceci:
<select ng-model="selectedFinancialId" ng-options="c.id as c.financial_year for c in account_year"
required style="min-width:180px;">
</select>
L'option vide est générée lorsqu'une valeur référencée par ng-model n'existe pas dans un ensemble d'options passé à ng-options.
Vous pouvez trouver la réponse complète + exemple sur stackoverflow. voici le lien
METTRE À JOUR:
voici un exemple:
<select ng-model="newItem.financial_year_id" required style="min-width:180px;">
<option ng-repeat="financial in account_year" value="{{financial.id}}" ng-selected="financial.status=='Active'">{{financial.financial_year}}</option>
</select>
dans le contrôleur:
$scope.newItem={};
$scope.account_year=[{id:1,financial_year:"2013-2014",status:"Active"},
{id:2,financial_year:"2014-2015",status:"Inactive"}]
//remove empty option
$scope.newItem.financial_year_id=$scope.account_year[0].id;
exemple live: http://jsfiddle.net/choroshin/5YDJW/7/
Ng-option est aussi un bon moyen. Mais si vous voulez vraiment ng-repeat, utilisez-le comme ceci.
$scope.newItem.financial_year_id=" ";
Initialisez la variable lorsque vous démarrez le contrôleur. Si vous ne l'initialisez pas, alors cela prend comme indéfini. Donc, la première valeur vide est présente.