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 相关文章推荐
增强用户体验友好性之jquery easyui window 窗口关闭时的提示
Jun 22 Javascript
js读取注册表的键值示例
Sep 25 Javascript
jQuery 计算iframe 窗口大小的方法
May 13 Javascript
jQuery使用hide方法隐藏页面上指定元素的方法
Mar 30 Javascript
JavaScript中join()方法的使用简介
Jun 09 Javascript
js获取客户端操作系统类型的方法【测试可用】
May 27 Javascript
JS中位置与大小的获取方法
Nov 22 Javascript
JavaScript基础之this详解
Jun 04 Javascript
jquery实现左右轮播图效果
Sep 28 jQuery
基于vue中解决v-for使用报红并出现警告的问题
Mar 03 Javascript
vue实现同一个页面可以有多个router-view的方法
Sep 20 Javascript
vue接通后端api以及部署到服务器操作
Aug 13 Javascript
基于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提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
2011/02/08 PHP
PHP+Jquery与ajax相结合实现下拉淡出瀑布流效果【无需插件】
2016/05/06 PHP
深入浅析PHP无限极分类的案例教程
2016/05/09 PHP
Discuz论坛密码与密保加密规则
2016/12/19 PHP
PHP设计模式(八)装饰器模式Decorator实例详解【结构型】
2020/05/02 PHP
TNC vs BOOM BO3 第一场2.13
2021/03/10 DOTA
js 事件小结 表格区别
2007/08/13 Javascript
JQuery Easyui Tree的oncheck事件实现代码
2010/05/28 Javascript
coffeescript使用的方式汇总
2015/08/05 Javascript
基于jQuery实现简单的折叠菜单效果
2015/11/23 Javascript
深入解析AngularJS框架中$scope的作用与生命周期
2016/03/05 Javascript
JS+CSS实现闪烁字体效果代码
2016/04/05 Javascript
AngularJs 弹出模态框(model)
2016/04/07 Javascript
js轮播图透明度切换(带上下页和底部圆点切换)
2017/04/27 Javascript
vue.js 微信支付前端代码分享
2018/02/10 Javascript
javascript中call,apply,bind的区别详解
2020/12/11 Javascript
python矩阵的转置和逆转实例
2018/12/12 Python
python 利用pandas将arff文件转csv文件的方法
2019/02/12 Python
快速解决pyqt5窗体关闭后子线程不同时退出的问题
2019/06/19 Python
对django的User模型和四种扩展/重写方法小结
2019/08/17 Python
关于ResNeXt网络的pytorch实现
2020/01/14 Python
英国景点门票网站:attractiontix
2019/08/27 全球购物
微软马来西亚官方网站:Microsoft马来西亚
2019/11/22 全球购物
金讯Java笔试题目
2013/06/18 面试题
Why do we need Unit test
2013/01/03 面试题
电气专业应届生求职信
2013/11/01 职场文书
外企求职信范文分享
2013/12/31 职场文书
中学生个人自我评价
2014/02/06 职场文书
教师个人自我评价范文
2014/04/13 职场文书
2014年三万活动总结
2014/04/26 职场文书
挂牌仪式策划方案
2014/05/18 职场文书
事业单位个人总结
2015/02/12 职场文书
小人国观后感
2015/06/11 职场文书
网络研修心得体会
2016/01/08 职场文书
2016年幼儿园庆六一开幕词
2016/03/04 职场文书
《弟子规》读后感:知廉耻、明是非、懂荣辱、辨善恶
2019/12/03 职场文书