I am using ng-repeat to render options with different value and text here, and also setting the default one.But again angular adds an empty undefined option.
<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>
Now the active one is selected but the empty option still rendering.
Ng-option is also a good way. But if you really want ng-repeat then use like this.
Initialize the variable when you start the controller. If you not initialize it then it takes as undefined. So the first empty value is present.
The empty option is generated when a value referenced by ng-model doesn't exist in a set of options passed to ng-options.
You can find the full answer+example on stackoverflow. here's the link
UPDATE:
here's an example:
in controller:
live example: http://jsfiddle.net/choroshin/5YDJW/7/
Try
ng-options
instead:DEMO
You should think about redesigning your model like that to use
ng-options
. When we use<select>
, there is only 1 selected item and this item should be a property of$scope
referencing an item in the list => we don't need to duplicate 1 more property with"active"
and"inactive"
for all objects.Your current model design makes sense when there are more than 1 selected item, but if there are more than 1, we should use a list of checkboxes instead of
<select>
If you want to bind with Id, try this:
DEMO