angularjs之ng-option

ng-options一般有以下用法:

对于数组:

  • label for value in array
  • select as label for value in array
  • label group by group for value in array
  • label disable when disable for value in array
  • label group by group for value in array track by trackexpr
  • label disable when disable for value in array track by trackexpr
  • label for value in array | orderBy:orderexpr track by trackexpr(for including a filter with track by)
  • 对于对象:
  • label for (key , value) in object
  • select as label for (key ,value) in object
  • label group by group for (key,value) in object
  • label disable when disable for (key, value) in object
  • select as label group by group for(key, value) in object
  • select as label disable when disable for (key, value) in object

1.基本下拉效果(lable for value in array)

  其中select标签中的ng-model属性必须有,其值为选中的对象或属性值。

<div ng-controller="ngselect">
    <p>usage:label for value in array</p>
    <p>选项,{{selected}}</p>
    <select ng-model="selected" ng-options="o.id for o in optData">
        <option value="">-- 请选择 --</option>
    </select>
</div>
m1.controller("ngselect",[‘$scope‘,function($sc){
    $sc.selected = ‘‘;
    $sc.optData = [{
        id: 10001,
        MainCategory: ‘男‘,
        ProductName: ‘水洗T恤‘,
        ProductColor: ‘白‘
    },{
        id: 10002,
        MainCategory: ‘女‘,
        ProductName: ‘圓領短袖‘,
        ProductColor: ‘黃‘
    },{
        id: 10003,
        MainCategory: ‘女‘,
        ProductName: ‘圓領短袖‘,
        ProductColor: ‘黃‘
    }];
}]);

2.自定义下拉显示名称(label for value in array)

label可以根据需要拼接出不同的字符串

<div ng-controller="ngselect2">
    <p>usage:label for value in array(label可以根据需求拼接出不同的字符串)</p>
    <p>选项,{{selected}}</p>
    <select ng-model="selected" ng-options="(o.ProductColor+‘-‘+o.ProductName) for o in optData">
        <option value="">-- 请选择 --</option>
    </select>
</div>
m1.controller("ngselect2",[‘$scope‘,function($sc){
    $sc.selected = ‘‘;
    $sc.optData = [{
        id: 10001,
        MainCategory: ‘男‘,
        ProductName: ‘水洗T恤‘,
        ProductColor: ‘白‘
    },{
        id: 10002,
        MainCategory: ‘女‘,
        ProductName: ‘圓領短袖‘,
        ProductColor: ‘黃‘
    },{
        id: 10003,
        MainCategory: ‘女‘,
        ProductName: ‘圓領短袖‘,
        ProductColor: ‘黃‘
    }];
}]);

3.ng-options 选项分组

group by分组项

<div ng-controller="ngselect3">
    <p>usage:label group by groupName for value in array</p>
    <p>选项,{{selected}}</p>
    <select ng-model="selected" ng-options="(o.ProductColor+‘-‘+o.ProductName) group by o.MainCategory for o in optData">
        <option value="">-- 请选择 --</option>
    </select>
</div>
m1.controller("ngselect3",[‘$scope‘,function($sc){
    $sc.selected = ‘‘;
    $sc.optData = [{
        id: 10001,
        MainCategory: ‘男‘,
        ProductName: ‘水洗T恤‘,
        ProductColor: ‘白‘
    },{
        id: 10002,
        MainCategory: ‘女‘,
        ProductName: ‘圓領长袖‘,
        ProductColor: ‘黃‘
    },{
        id: 10003,
        MainCategory: ‘女‘,
        ProductName: ‘圓領短袖‘,
        ProductColor: ‘黃‘
    }];
}]);

4.ng-options 自定义ngModel的绑定

下面selected的值为optData的id

<div ng-controller="ngselect4">
    <p>usage:select as label for value in array</p>
    <p>选项,{{selected}}</p>
    <select ng-model="selected" ng-options="o.id as o.ProductName for o in optData">
        <option value="">-- 请选择 --</option>
    </select>
</div>
m1.controller("ngselect4",[‘$scope‘,function($sc){
    $sc.selected = ‘‘;
    $sc.optData = [{
        id: 10001,
        MainCategory: ‘男‘,
        ProductName: ‘水洗T恤‘,
        ProductColor: ‘白‘
    },{
        id: 10002,
        MainCategory: ‘女‘,
        ProductName: ‘圓領长袖‘,
        ProductColor: ‘黃‘
    },{
        id: 10003,
        MainCategory: ‘女‘,
        ProductName: ‘圓領短袖‘,
        ProductColor: ‘黃‘
    }];
}]);

5.ng-options 多级下拉

<div ng-controller="ngselect5">
    <select ng-model="selectedPerson" ng-options="obj.name for obj in people"></select>
    <select ng-model="selectedGenre">
        <option ng-repeat="label in people[selectedPerson.id].interest">{{label}}</option>
    </select>
</div>
m1.controller("ngselect5",[‘$scope‘,function($sc){
$sc.people = [
                    {
                            id: 0,
                            name: ‘张三‘,
                            interest: [
                            ‘爬山‘,
                            ‘游泳‘,
                            ‘旅游‘,
                            ‘美食‘
                        ]
                    },
                    {
                        id: 1,
                        name: ‘李四‘,
                        interest: [
                            ‘音乐‘,
                            ‘美食‘,
                            ‘Coffee‘,
                            ‘看书‘
                        ]
                    },
                    {
                        id: 2,
                        name: ‘王五‘,
                        interest: [
                            ‘音乐‘,
                            ‘电影‘,
                            ‘中国好声音‘,
                            ‘爸爸去哪了‘,
                            ‘非常静距离‘
                        ]
                    },
                    {
                        id: 3,
                        name: ‘小白‘,
                        interest: [
                            ‘游泳‘,
                            ‘游戏‘,
                            ‘宅家里‘
                        ]
                    }
                ];
}]);

原网址:http://www.cnblogs.com/zhx1991/p/4579886.html

时间: 2024-10-14 09:07:36

angularjs之ng-option的相关文章

转走进AngularJs(八) ng的路由机制

走进AngularJs(八) ng的路由机制 2013-12-19 我来说两句 收藏 我要投稿 今天心情不错~,公司请了个中医来给按摩拔罐刮痧,一套下来那个爽啊~,趁着精力充沛了解了下Angular的路由机制,在此分享出来与大家共同学习. 在谈路由机制前有必要先提一下现在比较流行的单页面应用,就是所谓的single page APP.为了实现无刷新的视图切换,我们通常会用ajax请求从后台取数据,然后套上HTML模板渲染在页面上,然而ajax的一个致命缺点就是导致浏览器后退按钮失效,尽管我们可以

走进AngularJs(二) ng模板中常用指令的使用方式

通过使用模板,我们可以把model和controller中的数据组装起来呈现给浏览器,还可以通过数据绑定,实时更新视图,让我们的页面变成动态的.ng的模板真是让我爱不释手.学习ng道路还很漫长,从模板开始入手是个不错方式,因为这部分内容相对简单好理解,而且是视图层的东西,大家都喜欢可以立马看得见的东西嘛.本篇我将搜罗模板中的常用指令一一测试,了解其使用方法,有点像背单词的感觉,会比较枯燥.不过对于初学,这样的枯燥是必须要经历的,开始~ 一.模板中可使用的东西及表达式 模板中可以使用的东西包括以下

走进AngularJs(八) ng的路由机制

在谈路由机制前有必要先提一下现在比较流行的单页面应用,就是所谓的single page APP.为了实现无刷新的视图切换,我们通常会用ajax请求从后台取数据,然后套上HTML模板渲染在页面上,然而ajax的一个致命缺点就是导致浏览器后退按钮失效,尽管我们可以在页面上放一个大大的返回按钮,让用户点击返回来导航,但总是无法避免用户习惯性的点后退.解决此问题的一个方法是使用hash,监听hashchange事件来进行视图切换,另一个方法是用HTML5的history API,通过pushState(

angularJs中ng一些内置的工具方法:

1.angular.equals: (1)两个参数满足===比较返回true;(2)两个参数是同一种类型,同时他们的每一个属性通过angular.equals都是返回true:(3)两个都是NAN(在js中虽然NAN==NAN为false,但是这里为true);(4)两个对象代表同一个正则表达式,如/abc/==/abc/(虽然在js中返回false) 2.angular.copy: 创建来源source的一个深度克隆对象,可以是一个对象或者数组.如果没有指定destination那么就会返回一

AngularJS入门之如何快速上手

AngularJS(ng)是一个纯JS框架,AngularJS易于构建CRUD应用(CRUD意思是增删改查) 适用于以数据操作为主的SPA(Single Page Application)应用.基于jQuery对传统的DOM操作进行进一步的封装---使用MVC操作代替了所有的DOM操作.不再是"先查找元素再操作元素",所有的操作都是以"业务数据"为中心 搭建环境: 使用 AngularJS 的步骤:1.引入必需的js文件 : angular.js2.为父元素声明ng

《Node.js+MongoDB+AngularJS Web开发》读书笔记及联想

总体介绍 <Node.js+MongoDB+AngularJS Web开发>,于2015年6月出版,是一本翻译过来的书,原书名为<Node.js,MongoDB and AngularJS Web Development>,总的来说是一本讲述如何用Javascript进行B/S架构全栈开发的书. 该书主要讲解4种技术(框架),分为6个部分29个章节.4种技术即Node.js.MongoDB.Express.AngularJS,业内称为MEAN:6个部分我个人理解为: 基础(引言).

angularJS实践过程中出现的问题总结

同名服务 在一次项目里,之前是同事写的.我有一次在异步获取服务器上的数据时,习惯把api地址写在一个服务Store里,但是程序总是返回Store.api.get()里的get is undefined.知道肯定是Store.api为空造成的原因:但是觉得应该是没有问题的才对,最后看到在页面里又重新定义了一次Store服务,所以造成了覆盖. myApp.factory('Store',function(){ return{ name:'zhang', age:25 } }) myApp.facto

拥抱AngularJS

文中一些地方AngularJS简称ng 简介: ng诞生于2009年,由Misko Hevery等创建,后被Google收购,为克服HTML在构建应用上的不足而设计. 是一款优秀的前端JS框架,核心特性:MVVM(Model-View-ViewModel).模块化.双向数据绑定.依赖注入. 官网:https://angularjs.org/ 中文网:http://www.apjs.net/ 入门: 图灵社区 书籍: 用AngularJS开发下一代Web应用  AngularJS权威教程 源码:

学会使用AngularJS

这是用前端框架AngularJS构建一个简单应用的部分代码,首页配制一个路由.当然,AngularJS路由功能是一个纯前端的解决方案,与我们熟悉的后台路由不太一样.前端路由需要提前对指定 的(ng-app),定义路由规则(routeProvider),然后通过不同的URL,告诉(ng-app)加载哪个页面(HTML),再渲染到(ng-app)视图(ng-view)中.虽然URL输入不一样,页面展示不一样,其实完成的是单页(ng-app)视图(ng-view)的局部刷新. 由上图可以知道: 控制器

基于angularJS和requireJS的前端架构

1.概要描述 1.1.angularJS描述:angularJS是可以用来构建WEB应用的,WEB应用中的一种端对端的完整解决方案.通过开发者呈现一个更高层次的抽象来简化应用的开发.最适合的就是用它来构建一个CRUD应用,它提供了非常方便的且统一高效的解决方案,其数据绑定.基本模版标识符.表单验证.路由.深度链接.组件重用.依赖注入.以及HTML标记等,最受欢迎的莫过于它的双向数据绑定. 1.2.requireJS描述:requireJS是来解决传统的页面加载script标记操作,通过其初始化配