当前位置: 首页 > news >正文

[Angularjs]ng-select和ng-options

写在前面

最近由于项目需要,学了一段时间的angularjs,发现还是比较容易上手的,里面有很多地方,的确震撼了自己。这里就简单的介绍一下angularjs中ng-select和ng-options的用法。

ng-select

ng-select用来将数据同HTML的<select>标签进行绑定。这个指令可以和ng-model以及ng-options指令一起使用,构建精细且表现良好的动态表单。

ng-options的值可以是一个内涵表达式(comprehension expression),其实这只是一种有趣的说法,简单来说就是它可以接收一个数组或者对象,并对她们进行循环,将内部的内容提供给select标签内部的选项。它可以是一下两种形式。

1、数组作为数据源

用数组中的值做标签。

用数组中的值作为选中的标签。

用数组中的值做标签组。

用数组中的值作为选中的标签组。

2、对象作为数据源

用对象的键-值(key-value)做标签。

用对象的键-值作为选中的标签。

用对象的键-值作为标签组。

用对象的键-值作为选中的标签组。

一个例子

复制代码
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" ng-app="app">
<head>
    <title>select</title>
    <script src="JS/angular.min.js"></script>
    <script>
        var app = angular.module('app', []);
        app.controller('selectController', function ($scope) {
            $scope.mycity = '北京';
            $scope.Cities = [{ id: 1, name: '北京' }, { id: 2, name: '上海' }, { id: 3, name: '广州' }];
        });
    </script>
</head>
<body>
    <div ng-controller="selectController">
        <select ng-model="mycity" ng-options="city for city in Cities"></select>
    </div>
</body>
</html>
复制代码

查看一下dom

你会发现,上面的option中的text都是对象,这也很容易理解,因为cities数组的每一项都是一个对象,绑定的时候将以对象直接绑定上。那么我们如何只让它显示name属性呢?

    <div ng-controller="selectController">
        <select ng-model="mycity" ng-options="city.name for city in Cities"></select>
    </div>

直接点出属性即可。再查看下dom数。

值已经显示出来,但是并不是太完美,因为第一项默认选中的竟然没有值,那么接下来我们指定默认值。

  $scope.mycity = '北京';

加上这句代码,并不能解决问题,我们仍需修改ng-options

<select ng-model="mycity" ng-options="city.name as city.name for city in Cities"></select>

我们再查看下dom

ng-options有以下格式的语法

for array data sources:

    • label for value in array
    • select as label for value in array
    • label group by group for value in array
    • select as label group by group for value in array track by trackexpr

for object data sources:

    • label for (key , value) in object
    • select as label for (key , value) in object
    • label group by group for (key, value) in object
    • select as label group by group for (key, value) in ob

在看一个分组的例子,为cities数组加上group属性,并按照group分组:

复制代码
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" ng-app="app">
<head>
    <title>select</title>
    <script src="JS/angular.min.js"></script>
    <script>
        var app = angular.module('app', []);
        app.controller('selectController', function ($scope) {
            $scope.mycity = '北京';
            $scope.Cities = [{ id: 1, name: '北京', group: '中国' }, { id: 2, name: '上海', group: '中国' }, { id: 3, name: '广州',group:'中国' }];
        });
    </script>
</head>
<body>
    <div ng-controller="selectController">
        <select ng-model="mycity" ng-options="city.name as city.name group by city.group for city in Cities"></select>
    </div>
</body>
</html>
复制代码

结果

双向绑定

这里已经指定了ng-model,获取选中的值,也非常方便了。

复制代码
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" ng-app="app">
<head>
    <title>select</title>
    <script src="JS/angular.min.js"></script>
    <script>
        var app = angular.module('app', []);
        app.controller('selectController', function ($scope) {
            $scope.mycity = '北京';
            $scope.Cities = [{ id: 1, name: '北京', group: '中国' }, { id: 2, name: '上海', group: '中国' }, { id: 3, name: '广州', group: '中国' }];
        });
    </script>
</head>
<body>
    <div ng-controller="selectController">
        <select ng-model="mycity" ng-options="city.name as city.name group by city.group for city in Cities"></select>
        <h1>欢迎来到{{mycity}}</h1>
    </div>
</body>
</html>
复制代码

总结

刚接触angularjs不久,这是见到的其中的一个例子,顺手总结在这里,也是一种学习。

博客地址:http://www.cnblogs.com/wolf-sun/
博客版权:本文以学习、研究和分享为主,欢迎转载,但必须在文章页面明显位置给出原文连接。
如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步!
再次感谢您耐心的读完本篇文章。http://www.cnblogs.com/wolf-sun/p/4614532.html

相关文章:

  • eclipse实现JavaWeb应用增量打包
  • AngularJS之Filter(二)
  • nginx 负载服务器优化
  • 【SSH网上商城项目实战14】商城首页UI的设计
  • eclipse+python+selenium+mysqldb环境搭建
  • 取模和与运算的优化
  • STORM_0007_Multi-Lang protocol of Storm/多语言协议的翻译
  • Jquery 中map()函数的用法
  • 大公司都有哪些开源项目~~~简化版
  • Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
  • Arm开发板+Qt学习之路-multiple definition of
  • 清除windows系统垃圾文件简易脚本(bat)
  • 1225 八数码难题
  • ES6初探,什么是ES6
  • who命令
  • @jsonView过滤属性
  • 「面试题」如何实现一个圣杯布局?
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • 【前端学习】-粗谈选择器
  • 【知识碎片】第三方登录弹窗效果
  • egg(89)--egg之redis的发布和订阅
  • es6--symbol
  • ES6简单总结(搭配简单的讲解和小案例)
  • HTTP--网络协议分层,http历史(二)
  • js写一个简单的选项卡
  • k8s 面向应用开发者的基础命令
  • Spring声明式事务管理之一:五大属性分析
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 爬虫模拟登陆 SegmentFault
  • 如何合理的规划jvm性能调优
  • 新手搭建网站的主要流程
  • 因为阿里,他们成了“杭漂”
  • 终端用户监控:真实用户监控还是模拟监控?
  • Spring Batch JSON 支持
  • #NOIP 2014# day.1 T2 联合权值
  • $.ajax中的eval及dataType
  • (1)(1.13) SiK无线电高级配置(六)
  • (9)目标检测_SSD的原理
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (附源码)计算机毕业设计ssm电影分享网站
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (十)c52学习之旅-定时器实验
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (转)h264中avc和flv数据的解析
  • (转)程序员技术练级攻略
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .net知识和学习方法系列(二十一)CLR-枚举
  • @Async注解的坑,小心
  • @Autowired标签与 @Resource标签 的区别
  • @property @synthesize @dynamic 及相关属性作用探究
  • [ 数据结构 - C++] AVL树原理及实现
  • [2]十道算法题【Java实现】