Reputation: 12222
I have a select
list created with ng-repeat
and not ng-options
. The issue I have is that there is an extra blank list item that disappears as soon as the user change the value.
The answer to AngularJS - extra blank option added using ng-repeat in select tag mentions that the selected item should be initialized to avoid that issue. I did it but I still have a blank entry.
HTML:
<select ng-model="selectedLanguage">
<option ng-repeat="language in languages" value="{{language}}" ng-selected="selectedLanguage == language">{{language.name}}</option>
</select>
<h2>{{selectedLanguage}}</h2>
Controller:
app.controller('Ctrl', function($scope) {
$scope.languages = [{ name: "English", key: 'en' }, { name: "French", key: 'fr'}];
$scope.selectedLanguage = $scope.languages[0];
});
The Plunker
Upvotes: 0
Views: 3249
Reputation: 19748
You should use ng-options I updated your plunkr
http://plnkr.co/edit/Iz7wFfG9l6wmQ50w2RpP
HTML
<!DOCTYPE html>
<html ng-app="app">
<head>
<script data-require="angular.js@1.2.1" data-semver="1.2.1" src="http://code.angularjs.org/1.2.1/angular.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body ng-controller="Ctrl">
<h1>Hello Plunker!</h1>
<select ng-model="selectedLanguage" ng-options="language.name | uppercase for language in languages">
</select>
<h2>{{selectedLanguage}}</h2>
</body>
</html>
JS (no changes)
// Code goes here
var app = angular.module("app", []);
app.controller('Ctrl', function($scope) {
$scope.languages = [{ name: "English", key: 'en' }, { name: "French", key: 'fr'}];
$scope.selectedLanguage = $scope.languages[0];
});
Upvotes: 2