AngularJS Select(选择框)使用详解


Posted in Javascript onJanuary 18, 2017

1、Select概述

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

<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>

2、数据源为对象

选择的值为在 key-value 对中的key:

<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>

选择的值为在 key-value 对中的value对象一个属性:

<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>

3、ng-options 与 ng-repeat

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

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

<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>

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

<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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js鼠标点击事件在各个浏览器中的写法及Event对象属性介绍
Jan 24 Javascript
杨氏矩阵查找的JS代码
Mar 21 Javascript
jquery封装的对话框简单实现
Jul 21 Javascript
javaScript事件学习小结(四)event的公共成员(属性和方法)
Jun 09 Javascript
轮播图组件js代码
Aug 08 Javascript
canvas实现刮刮卡效果
Mar 14 Javascript
js实现从左向右滑动式轮播图效果
Jul 07 Javascript
Vue CLI3.0中使用jQuery和Bootstrap的方法
Feb 28 jQuery
初试vue-cli使用HBuilderx打包app的坑
Jul 17 Javascript
vue-devtools的安装和使用步骤详解
Oct 17 Javascript
vue实现淘宝购物车功能
Apr 20 Javascript
Vue.js桌面端自定义滚动条组件之美化滚动条VScroll
Dec 01 Vue.js
基于JavaScript实现屏幕滚动效果
Jan 18 #Javascript
JavaScript计时器用法分析【setTimeout和clearTimeout】
Jan 18 #Javascript
JavaScript实现简易的天数计算器实例【附demo源码下载】
Jan 18 #Javascript
原生Javascript插件开发实践
Jan 18 #Javascript
js实现炫酷的左右轮播图
Jan 18 #Javascript
jQuery实现别踩白块儿网页版小游戏
Jan 18 #Javascript
工厂模式在JS中的实践
Jan 18 #Javascript
You might like
如何对PHP程序中的常见漏洞进行攻击(上)
2006/10/09 PHP
php相当简单的分页类
2008/10/02 PHP
php除数取整示例
2014/04/24 PHP
PHP利用curl发送HTTP请求的实例代码
2020/07/09 PHP
json 实例详细说明教程
2009/10/31 Javascript
jQuery操作 input type=checkbox的实现代码
2012/06/14 Javascript
JS实现进入页面时渐变背景色的方法
2015/02/25 Javascript
JS非Alert实现网页右下角“未读信息”效果弹窗
2015/09/26 Javascript
JavaScript Split()方法
2015/12/18 Javascript
vue的props实现子组件随父组件一起变化
2016/10/27 Javascript
ES6中Array.includes()函数的用法
2017/09/20 Javascript
axios中cookie跨域及相关配置示例详解
2017/12/20 Javascript
微信小程序实现人脸检测功能
2018/05/25 Javascript
如何利用vue+vue-router+elementUI实现简易通讯录
2019/05/13 Javascript
微信小程序版本自动更新的方法
2019/06/14 Javascript
vue自定义switch开关组件,实现样式可自行更改
2019/11/01 Javascript
vue 项目@change多个参数传值多个事件的操作
2021/01/29 Vue.js
[46:14]VGJ.T vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python的Flask框架与数据库连接的教程
2015/04/20 Python
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
2018/03/22 Python
python针对mysql数据库的连接、查询、更新、删除操作示例
2019/09/11 Python
基于python plotly交互式图表大全
2019/12/07 Python
Python中openpyxl实现vlookup函数的实例
2020/10/28 Python
python 6种方法实现单例模式
2020/12/15 Python
浅谈matplotlib默认字体设置探索
2021/02/03 Python
CSS3 简单又实用的5个属性
2010/03/04 HTML / CSS
CSS3 实现倒计时效果
2020/11/25 HTML / CSS
Roxy荷兰官方网站:冲浪、滑雪板、服装和配件
2019/10/22 全球购物
探亲邀请信范文
2014/01/30 职场文书
机关会计岗位职责
2014/04/08 职场文书
会计试用期自我评价
2014/09/19 职场文书
家属联谊会致辞
2015/07/31 职场文书
运动会广播稿20字
2015/08/19 职场文书
如何书写公司员工保密协议?
2019/06/27 职场文书
超市啤酒狂欢夜策划方案范文!
2019/07/03 职场文书
实操Python爬取觅知网素材图片示例
2021/11/27 Python