AngularJS cho phép tạo danh sách dropdown dựa trên các phần tử trong mảng, hay 1 đối tượng.
Tạo một select box dùng ng-options
Nếu bạn muốn tạo 1 danh sách dropdown, dựa trên 1 đối tượng hay 1 mảng trong AngularJS, bạn nên dùng chỉ thị ng-options.

<!DOCTYPE html>
<html>
<meta charset="UTF-8">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body>
<div ng-app="myApp" ng-controller="myCtrl">
<select ng-model="selectedName" ng-options="x for x in names">
</select>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.names = ["Johnson", "Trang", "Andy"];
});
</script>
<p>Đây là ví dụ chỉ ra cách điền 1 danh sách dropdown dùng chỉ thị ng-options --- dammio.com</p>
</body>
</html>
Chỉ thị ng-options với ng-repeat
Bạn có thể dùng chỉ thị ng-repeat để tạo cùng 1 danh sách dropdown:
<!DOCTYPE html>
<html>
<meta charset="UTF-8">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body>
<div ng-app="myApp" ng-controller="myCtrl">
<select>
<option ng-repeat="x in names">{{x}}</option>
</select>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.names = ["Dammio", "Tom", "Johnson"];
});
</script>
<p>Đây là ví dụ chỉ ra cách điền 1 danh sách dropdown dùng chỉ thị ng-repeat --- dammio.com</p>
</body>
</html>
Vì chỉ thị ng-repeat lặp lại 1 khối mã HTML cho mỗi phần tử trong mảng cho nên nó có thể dùng để tạo các tùy chọn (options) trong 1 danh sách dropdown. Tuy nhiên, chỉ thị ng-options đặc biệt dùng để tạo 1 danh sách dropdown với các tùy chọn, và có ít nhất 1 lợi ích quan trọng. Đó là dropdown dùng ng-options cho phép giá trị được chọn trở thành 1 đối tượng, trong khi đó dropdown dùng ng-repeat chỉ là kiểu chuỗi.
Cách sử dụng
Giả sử bạn có 1 mảng đối tượng:
$scope.cars = [
    {model : "Ford Mustang", color : "red"},
    {model : "Fiat 500", color : "white"},
    {model : "Volvo XC90", color : "black"}
];
Chỉ thị ng-repeat có các giới hạn và giá trị được chọn phải là kiểu chuỗi.

<!DOCTYPE html>
<html>
<meta charset="UTF-8">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body>
<div ng-app="myApp" ng-controller="myCtrl">
<p>Chọn 1 chiếc xe:</p>
<select ng-model="selectedCar">
<option ng-repeat="x in cars" value="{{x.model}}">{{x.model}}</option>
</select>
<h1>Bạn chọn: {{selectedCar}}</h1>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.cars = [
        {model : "Toyota 1242", color : "blue"},
        {model : "Lexus 700", color : "pink"},
        {model : "Mazda RE10", color : "gray"}
    ];
});
</script>
<p>Khi dùng chỉ thị ng-repeat để tạo danh sách dropdown, giá trị được chọn phải là kiểu chuỗi. --- dammio.com</p>
<p>Trong ví dụ trên, bạn phải chọn giữa color và model để làm giá trị được chọn.</p>
</body>
</html>
Khi dùng chỉ thị ng-options, giá trị được chọn phải là kiểu đối tượng.

<!DOCTYPE html>
<html>
<meta charset="UTF-8">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body>
<div ng-app="myApp" ng-controller="myCtrl">
<p>Chọn 1 chiếc xe:</p>
<select ng-model="selectedCar" ng-options="x.model for x in cars">
</select>
<h1>Bạn chọn: {{selectedCar.model}}</h1>
<p>Màu xe được chọn là: {{selectedCar.color}}</p>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.cars = [
        {model : "Toyota 1242", color : "blue"},
        {model : "Lexus 700", color : "pink"},
        {model : "Mazda RE10", color : "gray"}
    ];
});
</script>
<p>Khi dùng chỉ thị ng-repeat để tạo danh sách dropdown, giá trị được chọn phải là kiểu chuỗi. --- dammio.com</p>
<p>Trong ví dụ trên, bạn phải chọn giữa color và model để làm giá trị được chọn.</p>
</body>
</html>
Khi giá trị được chọn là 1 đối tượng, nó có thể chứa nhiều thông tin hơn và ứng dụng của bạn sẽ linh hoạt hơn.
Nguồn dữ liệu là 1 đối tượng
Trong ví dụ trước, nguồn dữ liệu là 1 mảng, nhưng chúng ta có thể dùng 1 đối tượng là nguồn dữ liệu. Giả sử bạn có 1 đối tượng các cặp key-value (khóa-giá trị).
$scope.cars = {
    car01 : "Ford",
    car02 : "Fiat",
    car03 : "Volvo"
};
Diễn giải ở thuộc tính ng-options hơi khác 1 chút với các đối tượng. Ví dụ dùng 1 đối tượng là nguồn dữ liệu, x là key, y là value:
<!DOCTYPE html>
<html>
<meta charset="UTF-8">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body>
<div ng-app="myApp" ng-controller="myCtrl">
<p>Chọn 1 chiếc xe:</p>
<select ng-model="selectedCar" ng-options="x for (x, y) in cars">
</select>
<h1>Bạn chọn: {{selectedCar}}</h1>
</div>
<p>Ví dụ này mô tả cách dùng 1 đối tượng là nguồn dữ liệu khi tạo 1 danh sách dropdown.</p>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.cars = {
        car01 : "Toyota",
        car02 : "BWM",
        car03 : "Dammio"
    }
});
</script>
</body>
</html>
Giá trị được chọn luôn luôn là giá trị trong cặp key-value. Giá trị trong 1 cặp key-value cũng có thể là 1 đối tượng. Ví dụ giá trị được chọn sẽ là giá trị trong 1 cặp key-value, tuy nhiên lần này nó là 1 đối tượng.

<!DOCTYPE html>
<html>
<meta charset="UTF-8">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body>
<div ng-app="myApp" ng-controller="myCtrl">
<p>Chọn 1 chiếc xe:</p>
<select ng-model="selectedCar" ng-options="x for (x, y) in cars">
</select>
<h1>Bạn chọn: {{selectedCar.brand}}</h1>
<h2>Dòng xe: {{selectedCar.model}}</h2>
<h3>Màu sắc: {{selectedCar.color}}</h3>
<p>Chú ý giá trị được chọn thể hiện 1 đối tượng.</p>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.cars = {
        car01 : {brand : "Toyota", model : "ACC", color : "red"},
        car02 : {brand : "Mazda", model : "800", color : "white"},
        car03 : {brand : "Volvo", model : "XC90", color : "black"}
    }
});
</script>
</body>
</html>
Các tùy chọn ở danh sách dropdown không cần phải là key trong cặp key-value, nó cũng có thể là giá trị, hoặc 1 thuộc tính của đối tượng giá trị.
<!DOCTYPE html>
<html>
<meta charset="UTF-8">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body>
<div ng-app="myApp" ng-controller="myCtrl">
<p>Chọn 1 chiếc xe --- dammio.com:</p>
<select ng-model="selectedCar" ng-options="y.brand for (x, y) in cars">
</select>
<h1>Bạn chọn: {{selectedCar.brand}}</h1>
<h2>Dòng xe: {{selectedCar.model}}</h2>
<h3>Màu sắc: {{selectedCar.color}}</h3>
<p>Đoạn văn bản trong danh sách dropdown cũng có thể là 1 thuộc tính của đối tượng giá trị.</p>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.cars = {
        car01 : {brand : "Ford", model : "Mustang", color : "red"},
        car02 : {brand : "Fiat", model : "500", color : "white"},
        car03 : {brand : "Volvo", model : "XC90", color : "black"}
    }
});
</script>
</body>
</html>
Kết luận: như vậy bài viết đã trình bày cho bạn về cách sử dụng Select/Dropdown trong AngularJS.
- APA:
 Dammio. (2017). [AngularJS] Phần 13: Select/Dropdown trong AngularJS. https://www.dammio.com/2017/04/18/angularjs-phan-13-selectdropdown-trong-angularjs.
- BibTeX:
 @misc{dammio,
 author = {Dammio},
 title = {[AngularJS] Phần 13: Select/Dropdown trong AngularJS},
 year = {2017},
 url = {https://www.dammio.com/2017/04/18/angularjs-phan-13-selectdropdown-trong-angularjs},
 urldate = {2025-10-31}
 }


![[Node.js] Phần 3: Module Node.js [Node.js] Phần 3: Module Node.js](https://www.dammio.com/wp-content/uploads/2017/06/Node.js_logo.svg_-410x260.png)

![[HTML/HTML5] Phần 13: Phong cách CSS trong HTML [HTML/HTML5] Phần 13: Phong cách CSS trong HTML](https://www.dammio.com/wp-content/uploads/2017/08/html-css-image-410x260.jpg)
![[Bootstrap] Phần 25: Tooltip [Bootstrap] Phần 25: Tooltip](https://www.dammio.com/wp-content/uploads/2016/09/web-design_dammio-410x260.png)
![[Bootstrap] Phần 20: Thiết kế Form [Bootstrap] Phần 20: Thiết kế Form](https://www.dammio.com/wp-content/uploads/2016/11/no-image-410x260.png)
 wpDiscuz
                     
                    wpDiscuz