AngularJS Select(选择框)的使用详解

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

使用 ng-options 创建选择框

在 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 = ["Ancto", "Aseoe", "BBS"];
});
</script>

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

实例

<select>
<option ng-repeat="x in names">{{x}}</option>
</select>

ng-repeat 指令是通过数组来循环 HTML 代码来创建下拉列表,但 ng-options 指令更适合创建下拉列表,它有以下优势:

使用 ng-options 的选项的一个对象, ng-repeat 是一个字符串。
应该用哪个更好?
假设我们使用以下对象:

$scope.sites = [
    {site : "Ancto", url : "http://www.111cn.net"},
    {site : "Aseoe", url : "http://m.111cn.net"},
    {site : "BBS", url : "http://www.111cn.net/anzhuo"}
];
ng-repeat 有局限性,选择的值是一个字符串:

实例

使用 ng-repeat:
<select ng-model="selectedSite">
<option ng-repeat="x in sites" value="{{x.url}}">{{x.site}}</option>
</select>
 
<h1>你选择的是: {{selectedSite}}</h1>
使用 ng-options 指令,选择的值是一个对象:
实例
使用 ng-options:
<select ng-model="selectedSite" ng-options="x.site for x in sites">
</select>
 
<h1>你选择的是: {{selectedSite.site}}</h1>
<p>网址为: {{selectedSite.url}}</p>
 
当选择值是一个对象时,我们就可以获取更多信息,应用也更灵活。
数据源为对象
前面实例我们使用了数组作为数据源,以下我们将数据对象作为数据源。

$scope.sites = {
    site01 : "Ancto",
    site02 : "Aseoe",
    site03 : "BBS"
};

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

实例

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

<select ng-model="selectedSite" ng-options="x for (x, y) in sites">
</select>
 
<h1>你选择的值是: {{selectedSite}}</h1>

你选择的值为在 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 sites">
</select>
 

时间: 2024-11-03 05:36:27

AngularJS Select(选择框)的使用详解的相关文章

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

AngularJS Select(选择框) AngularJS 可以使用数组或对象创建一个下拉列表选项. 使用 ng-options 创建选择框 在 AngularJS 中我们可以使用 ng-option 指令来创建一个下拉列表,列表项通过对象和数组循环输出,如下实例: 实例 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="http://a

AngularJS入门教程之双向绑定详解_AngularJS

在这一步你会增加一个让用户控制手机列表显示顺序的特性.动态排序可以这样实现,添加一个新的模型属性,把它和迭代器集成起来,然后让数据绑定完成剩下的事情. 请重置工作目录: git checkout -f step-4 你应该发现除了搜索框之外,你的应用多了一个下来菜单,它可以允许控制电话排列的顺序. 步骤3和步骤4之间最重要的不同在下面列出.你可以在GitHub里看到完整的差别. 模板 app/index.html Search: <input ng-model="query"&g

MariaDB(MySQL)创建、删除、选择及数据类型使用详解_Mysql

一.MariaDB简介(MySQL简介略过)         MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品.在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB. MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公

AngularJS入门教程中SQL实例详解_AngularJS

AngularJS SQL 在前面章节中的代码也可以用于读取数据库中的数据. 使用 PHP 从 MySQL 中获取数据 AngularJS 实例 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></s

优化 加载 select-在做Web开发,select选择框的内容是表的外键,如何优化使得页面加载的速度变快

问题描述 在做Web开发,select选择框的内容是表的外键,如何优化使得页面加载的速度变快 (手机端网页)两张表:User表,Artical表.User表是Artical表的外键,我需要在页面上添加数据,但Username表里的内容很多,select选择框加载很慢,并且这个select可以不显示. 求解怎么进行优化?

基于JQuery的Select选择框的华丽变身_jquery

不过这种情况可能是一去不复返了,如果你猜测是使用HTML5技术, 那就错了,在中国,使用IE6浏览器的人仍占绝大大多数,这种古老的浏览器是不认识HTML5的. 我现在推荐的是一款JavaScript插件,它有JQuery和Prototype两种版本,支持所有类型的浏览器.使用它后,你的页面上的select选择框会变的漂亮的让你大吃一惊,下面是使用前和使用后的对比效果图. 单选模式: 多选模式: 更多的效果请访问这个插件的官方主页的中文翻译Chosen演示页面. 具体的用法非常简单,你只需要在se

js实现select选择框效果及美化_javascript技巧

网上有各种各样的关于 select 选择框的美化,找了很多,并没有好的样式效果.所以就找了一个利用 ul li 做的类似 select 选择框的效果,不废话了,先上图,效果如下: 点击一个 test ,就会把列表显示出来,再次点击,列表隐藏,选择一个 li ,就会把 span 里的内容替换成 li 的内容,然后可以用 js 监控 span 的变化,然后执行你的代码.效果如下:  html 代码如下:  <div id="type" class="test"&g

AngularJS 中的Promise --- $q服务详解_AngularJS

先说说什么是Promise,什么是$q吧.Promise是一种异步处理模式,有很多的实现方式,比如著名的Kris Kwal's Q还有JQuery的Deffered. 什么是Promise 以前了解过Ajax的都能体会到回调的痛苦,同步的代码很容易调试,但是异步回调的代码,会让开发者陷入泥潭,无法跟踪,比如: funA(arg1,arg2,function(){ funcB(arg1,arg2,function(){ funcC(arg1,arg2,function(){ xxxx.... })

AngularJS入门教程之表格实例详解_AngularJS

AngularJS 表格 ng-repeat 指令可以完美的显示表格. 在表格中显示数据 使用 angular 显示表格是非常简单的: AngularJS 实例 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"&g