AngularJS 选择框 (select)

AngularJS 可以使用数组或对象创建一个下拉列表选项

使用 ng-options 创建选择框

AngularJS ng-option 指令用来创建一个下拉列表

列表项通过对象和数组循环输出

ng-init 指令可以用来设置默认选中值

<!DOCTYPE html>
<meta charset="utf-8">
<link href="/static/next/css/tryit.css?v=2017082407" rel="stylesheet"/>
<script src="https://cdn.staticfile.org/angular.js/1.6.3/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
    <select ng-init="selectedName = names[0]" ng-model="selectedName" ng-options="x for x in names"></select>
</div>
<footer>简单教程,简单编程<br/>Copyright © 简单教程 www.twle.cn</footer>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.names = ["阿里", "腾讯", "简单教程"];
});
</script>

运行范例 »

ng-options 与 ng-repeat

ng-repeat 指令也可以用来创建下拉列表

<!DOCTYPE html>
<meta charset="utf-8">
<link href="/static/next/css/tryit.css?v=2017082407" rel="stylesheet"/>
<script src="https://cdn.staticfile.org/angular.js/1.6.3/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
<select><option ng-repeat="x in names">{{x}}</option></select>
</div>
<footer>简单教程,简单编程<br/>Copyright © 简单教程 www.twle.cn</footer>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.names = ["阿里", "腾讯", "简单教程"];
});
</script>

运行范例 »

ng-repeat 指令是通过数组来循环 HTML 代码来创建下拉列表

ng-options 指令更适合创建下拉列表,它有以下优势

  1. 使用 ng-options 的选项是一个对象
  2. ng-repeat 是一个字符串

用哪个更好?

假设我们有一个对象

$scope.sites = [
    {site : "腾讯", url : "http://www.qq.com"},
    {site : "阿里", url : "http://www.taobal.com"},
    {site : "简单教程", url : "https://www.twle.cn"}
];

ng-repeat 有局限性,因为它选择的值是一个字符串

<!DOCTYPE html>
<meta charset="utf-8">
<link href="/static/next/css/tryit.css?v=2017082407" rel="stylesheet"/>
<script src="https://cdn.staticfile.org/angular.js/1.6.3/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
<select ng-model="selectedSite"><option ng-repeat="x in sites" value="{{x.url}}">{{x.site}}</option>
</select><h1>你选择的是: {{selectedSite}}</h1>
<p>该范例演示了使用 ng-repeat 指令来创建下拉列表,选中的值是一个字符串</p>
</div>
<footer>简单教程,简单编程<br/>Copyright © 简单教程 www.twle.cn</footer>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.sites = [
        {site : "腾讯", url : "http://www.qq.com"},
        {site : "阿里", url : "http://www.taobal.com"},
        {site : "简单教程", url : "https://www.twle.cn"}
    ];
});
</script>

运行范例 »

使用 ng-options 指令,选择的值是一个对象

<!DOCTYPE html>
<meta charset="utf-8">
<link href="/static/next/css/tryit.css?v=2017082407" rel="stylesheet"/>
<script src="https://cdn.staticfile.org/angular.js/1.6.3/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
    <select ng-model="selectedSite" ng-options="x.site for x in sites"></select>
    <h1>你选择的是: {{selectedSite.site}}</h1>
    <h3>网址为: {{selectedSite.url}}</h3>
</div>
<p>该范例演示了使用 ng-options  指令来创建下拉列表,选中的值是一个对象</p>
<footer>简单教程,简单编程<br/>Copyright © 简单教程 www.twle.cn</footer>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.sites = [
        {site : "腾讯", url : "http://www.qq.com"},
        {site : "阿里", url : "http://www.taobal.com"},
        {site : "简单教程", url : "https://www.twle.cn"}
    ];
});
</script>

运行范例 »

当选择值是一个对象时,我们就可以获取更多信息,应用也更灵活

数据源为对象

上面的范例,我们都是使用数组作为数据源,接下来我们使用将数据对象作为数据源

$scope.sites = {
    site01 : "腾讯",
    site02 : "阿里",
    site03 : "简单教程"
};

ng-options 使用对象有很大的不同

下面的范例使用对象作为数据源, x 为键 (key), y 为值 (value)

<!DOCTYPE html>
<meta charset="utf-8">
<link href="/static/next/css/tryit.css?v=2017082407" rel="stylesheet"/>
<script src="https://cdn.staticfile.org/angular.js/1.6.3/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
<select ng-model="selectedSite" ng-options="x for (x, y) in sites"></select>
<h1>你选择的值是: {{selectedSite }}</h1>
</div>
<p></p>
<footer>简单教程,简单编程<br/>Copyright © 简单教程 www.twle.cn</footer>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.sites = {
        site01 : "腾讯",
        site02 : "阿里",
        site03 : "简单教程"
    };
});
</script>

运行范例 »

我们可以看到 你选择的值为在 key - value 对中的 value

嵌套对象

value 在 key - value 对中也可以是个对象

选择的值在 key- value 对的 value 中, 这是它是一个对象

$scope.cars = {
    car01 : {brand : "Ford", model : "Mustang", color : "red"},
    car02 : {brand : "Fiat", model : "500", color : "white"},
    car03 : {brand : "Volvo", model : "XC90", color : "black"}
};

运行范例 »

在下拉菜单也可以不使用 key - value 对中的 key , 直接使用对象的属性

<select ng-model="selectedCar" ng-options=" **y.brand**  for (x, y) in cars"></select>  

运行范例 »

学习 AngularJS

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.