AngularJS入门教程之Select(选择框)详解


Posted in Javascript onJuly 27, 2016

AngularJS Select(选择框)

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

使用 ng-options 创建选择框

在 AngularJS 中我们可以使用 ng-option 指令来创建一个下拉列表,列表项通过对象和数组循环输出,如下实例:

实例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
</head>
<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 = ["Google", "Runoob", "Taobao"];
});
</script>

<p>该实例演示了 ng-options 指令的使用。</p>

</body>
</html>

运行结果:

该实例演示了 ng-options 指令的使用。

ng-options 与 ng-repeat

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

实例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
</head>
<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 = ["Google", "Runoob", "Taobao"];
});
</script>

<p>该实例演示了使用 ng-repeat 指令来创建下拉列表。</p>

</body>
</html>

运行结果:

该实例演示了使用 ng-repeat 指令来创建下拉列表。

ng-repeat 指令是通过数组来循环 HTML 代码来创建下拉列表,但 ng-options 指令更适合创建下拉列表,它有以下优势:
使用 ng-options 的选项的一个对象, ng-repeat 是一个字符串。

应该用哪个更好?

假设我们使用以下对象:

$scope.sites = [
 {site : "Google", url : "http://www.google.com"},
 {site : "Runoob", url : "http://www.runoob.com"},
 {site : "Taobao", url : "http://www.taobao.com"}
];

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

实例

使用 ng-repeat:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
</head>
<body>

<div ng-app="myApp" ng-controller="myCtrl">

<p>选择网站:</p>

<select ng-model="selectedSite">
<option ng-repeat="x in sites" value="{{x.url}}">{{x.site}}</option>
</select>

<h1>你选择的是: {{selectedSite}}</h1>

</div>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
 $scope.sites = [
	 {site : "Google", url : "http://www.google.com"},
	 {site : "Runoob", url : "http://www.runoob.com"},
	 {site : "Taobao", url : "http://www.taobao.com"}
	];
});
</script>

<p>该实例演示了使用 ng-repeat 指令来创建下拉列表,选中的值是一个字符串。</p>
</body>
</html>

运行效果:

 选择网站:

你选择的是:http://www.google.com

 该实例演示了使用 ng-repeat 指令来创建下拉列表,选中的值是一个字符串。

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

实例

使用 ng-options:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
</head>
<body>

<div ng-app="myApp" ng-controller="myCtrl">

<p>选择网站:</p>

<select ng-model="selectedSite" ng-options="x.site for x in sites">
</select>

<h1>你选择的是: {{selectedSite.site}}</h1>
<p>网址为: {{selectedSite.url}}</p>

</div>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
 $scope.sites = [
	 {site : "Google", url : "http://www.google.com"},
	 {site : "Runoob", url : "http://www.runoob.com"},
	 {site : "Taobao", url : "http://www.taobao.com"}
	];
});
</script>

<p>该实例演示了使用 ng-options 指令来创建下拉列表,选中的值是一个对象。</p>
</body>
</html>

 运行效果:

 选择网站:

你选择的是:google

网址为:http://www.google.com

该实例演示了使用 ng-options 指令来创建下拉列表,选中的值是一个对象。

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

数据源为对象

前面实例我们使用了数组作为数据源,以下我们将数据对象作为数据源。

$scope.sites = {
 site01 : "Google",
 site02 : "Runoob",
 site03 : "Taobao"
};

ng-options 使用对象有很大的不同,如下所示:

实例

使用对象作为数据源, x 为键(key), y 为值(value):

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
</head>
<body>

<div ng-app="myApp" ng-controller="myCtrl">

<p>选择的网站是:</p>

<select ng-model="selectedSite" ng-options="x for (x, y) in sites">
</select>

<h1>你选择的值是: {{selectedSite}}</h1>

</div>

<p>该实例演示了使用对象作为创建下拉列表。</p>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
 $scope.sites = {
	 site01 : "Google",
	 site02 : "Runoob",
	 site03 : "Taobao"
	};
});
</script>

</body>
</html>

运行效果:

选择的网站是:

你选择的值是:Google

该实例演示了使用对象作为创建下拉列表。

 你选择的值为在 key-value 对中的 value。

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

实例

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

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
</head>
<body>

<div ng-app="myApp" ng-controller="myCtrl">

<p>选择一辆车:</p>

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

<h1>你选择的是: {{selectedCar.brand}}</h1>
<h2>模型: {{selectedCar.model}}</h2>
<h3>颜色: {{selectedCar.color}}</h3>

<p>注意选中的值是一个对象。</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>

运行结果:

选择一辆车

你选择的是: Fiat

模型: 500

颜色: white

注意: 选中的值是一个对象。

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

实例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
</head>
<body>

<div ng-app="myApp" ng-controller="myCtrl">

<p>选择一辆车:</p>

<select ng-model="selectedCar" ng-options="y.brand for (x, y) in cars"></select>
<p>你选择的是: {{selectedCar.brand}}</p>
<p>型号为: {{selectedCar.model}}</p>
<p>颜色为: {{selectedCar.color}}</p>

<p>下拉列表中的选项也可以是对象的属性。</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>

运行结果:

选择一辆车:

你选择的是: Ford

型号为:Mustang

颜色为: red

下拉列表中的选项也可以是对象的属性。

以上就是对AngularJS Select资料的整理,后续继续补充,希望能帮助有需要的朋友。

Javascript 相关文章推荐
纯css+js写的一个简单的tab标签页带样式
Jan 28 Javascript
jQuery循环滚动新闻列表示例代码
Jun 17 Javascript
JavaScript数值转换的三种方式总结
Jul 31 Javascript
原生JavaScript+LESS实现瀑布流
Dec 12 Javascript
js如何打印object对象
Oct 16 Javascript
JavaScript基础知识之方法汇总结
Jan 24 Javascript
JS实现汉字与Unicode码相互转换的方法详解
Apr 28 Javascript
基于Vuejs的搜索匹配功能实现方法
Mar 03 Javascript
JS中数组与对象的遍历方法实例小结
Aug 14 Javascript
layui点击按钮添加可编辑的一行方法
Aug 15 Javascript
使用vue2.0创建的项目的步骤方法
Sep 25 Javascript
微信小程序列表时间戳转换实现过程解析
Oct 12 Javascript
关于JS中的方法是否加括号的问题
Jul 27 #Javascript
AngularJS入门教程之 XMLHttpRequest实例讲解
Jul 27 #Javascript
AngularJS入门教程之服务(Service)
Jul 27 #Javascript
AngularJS 过滤器的简单实例
Jul 27 #Javascript
AngularJS延迟加载html template
Jul 27 #Javascript
AngularJS入门教程之控制器详解
Jul 27 #Javascript
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
Jul 27 #Javascript
You might like
PHP+iFrame实现页面无需刷新的异步文件上传
2014/09/16 PHP
Zend Framework动作助手Url用法详解
2016/03/05 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
PHP查找一列有序数组是否包含某值的方法
2020/02/07 PHP
PHP7 其他语言层面的修改
2021/03/09 PHP
javascript form 验证函数 弹出对话框形式
2009/06/23 Javascript
基于jquery 的一个progressbar widge
2010/10/29 Javascript
jQuery Clone Bug解决代码
2010/12/22 Javascript
jQuery中Form相关知识汇总
2015/01/06 Javascript
jquery实现仿Flash的横向滑动菜单效果代码
2015/09/17 Javascript
jquery实现模拟百分比进度条渐变效果代码
2015/10/29 Javascript
详解JavaScript基于面向对象之创建对象(2)
2015/12/10 Javascript
第十章之巨幕页头缩略图与警告框组件
2016/04/25 Javascript
bootstrap datetimepicker日期插件超详细使用方法介绍
2017/02/23 Javascript
浅谈在fetch方法中添加header后遇到的预检请求问题
2017/08/31 Javascript
微信小程序基于本地缓存实现点赞功能的方法
2017/12/18 Javascript
webpack项目调试以及独立打包配置文件的方法
2018/02/28 Javascript
解决vue-router进行build无法正常显示路由页面的问题
2018/03/06 Javascript
对vue中methods互相调用的方法详解
2018/08/30 Javascript
解决Vue大括号字符换行踩的坑
2020/11/09 Javascript
[01:08:24]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第一场 2月5日
2021/03/11 DOTA
pandas获取groupby分组里最大值所在的行方法
2018/04/20 Python
一看就懂得Python的math模块
2018/10/21 Python
Django中多种重定向方法使用详解
2019/07/17 Python
django echarts饼图数据动态加载的实例
2019/08/12 Python
python能自学吗
2020/06/18 Python
Shopee菲律宾:在线购买和出售
2019/11/25 全球购物
美国美食礼品篮网站:Gourmet Gift Baskets
2019/12/15 全球购物
英国在线购买轮胎、预订汽车、汽车维修和装配网站:Protyre
2020/04/12 全球购物
小学生学习雷锋倡议书
2014/05/15 职场文书
优秀团干部个人事迹
2014/05/29 职场文书
2014乡镇党政班子四风问题思想汇报
2014/09/14 职场文书
房屋出租委托书格式
2014/09/23 职场文书
假如给我三天光明读书笔记
2015/06/26 职场文书
用Python实现屏幕截图详解
2022/01/22 Python
使用Java去实现超市会员管理系统
2022/03/18 Java/Android